2008-12-02 42 views
8

我想創建一個自定義XmlDeclaration同時使用C#.NET 2或3如何使用XmlDocument/XmlDeclaration添加自定義XmlDeclaration?

這是我需要的輸出(它是由第三方應用程序的預期輸出)的XmlDocument/XmlDeclaration類:

<?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類本身的方式?

回答

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 - 謝謝! – 2008-12-02 15:26:26

5

你會要追加一個XmlProcessingInstruction使用的XmlDocumentCreateProcessingInstruction方法創建的。

例子:

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 - 再次感謝:) Bradely和你倆都釘上了它。 – 2008-12-02 15:29:57