2008-12-02 2 views
8

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

Это мой желаемый результат (это ожидаемый выход на приложение 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 I Should посмотреть на создание пользовательской XmlDeclaration? Или есть способ с самими классами XmlDocument/XmlDeclaration?

ответ

19

Что вы хотите создать, это не декларация 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); 
+0

@Bradley - Спасибо! –

5

Вы хотели бы добавить в 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); 
+0

@Oppositional - Еще раз спасибо :) Брэдли, и вы оба пригвоздили его. –