Как добавить пользовательский XmlDeclaration с помощью XmlDocument / XmlDeclaration? - PullRequest
8 голосов
/ 02 декабря 2008

Я хотел бы создать пользовательский XmlDeclaration при использовании классов XmlDocument / XmlDeclaration в c # .net 2 или 3.

Это мой желаемый вывод (это ожидаемый вывод стороннего приложения):

<?xml version="1.0" encoding="ISO-8859-1" ?>
<?MyCustomNameHere attribute1="val1" attribute2="val2" ?>
[ ...more xml... ]

Используя классы XmlDocument / XmlDeclaration, я могу создать только один XmlDeclaration с определенным набором параметров:

XmlDocument doc = new XmlDocument();
XmlDeclaration declaration = doc.CreateXmlDeclaration("1.0", "ISO-8859-1", null);
doc.AppendChild(declaration);

Существует ли класс, отличный от XmlDocument / XmlDeclaration, на который я должен обратить внимание при создании пользовательского XmlDeclaration? Или есть способ с самими классами XmlDocument / XmlDeclaration?

Ответы [ 2 ]

19 голосов
/ 02 декабря 2008

То, что вы хотите создать, - это не объявление XML, а «инструкция обработки». Вы должны использовать класс XmlProcessingInstruction , а не класс XmlDeclaration , например ::

XmlDocument doc = new XmlDocument();
XmlDeclaration declaration = doc.CreateXmlDeclaration("1.0", "ISO-8859-1", null);
doc.AppendChild(declaration);
XmlProcessingInstruction pi = doc.CreateProcessingInstruction("MyCustomNameHere", "attribute1=\"val1\" attribute2=\"val2\"");
doc.AppendChild(pi);
5 голосов
/ 02 декабря 2008

Вы хотите добавить XmlProcessingInstruction , созданную с использованием CreateProcessingInstruction метода XmlDocument .

Пример:

XmlDocument document        = new XmlDocument();
XmlDeclaration declaration  = document.CreateXmlDeclaration("1.0", "ISO-8859-1", "no");

string data = String.Format(null, "attribute1=\"{0}\" attribute2=\"{1}\"", "val1", "val2");
XmlProcessingInstruction pi = document.CreateProcessingInstruction("MyCustomNameHere", data);

document.AppendChild(declaration);
document.AppendChild(pi);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...