如何使用XmlDocument / XmlDeclaration添加自定义XmlDeclaration?

时间:2008-12-02 15:08:24

标签: c# .net xml xmldocument

我想在c#.net 2或3中使用XmlDocument / XmlDeclaration类时创建自定义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类本身?

2 个答案:

答案 0 :(得分: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);

答案 1 :(得分:5)

您希望附加使用 XmlDocument CreateProcessingInstruction 方法创建的 XmlProcessingInstruction

示例:

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);