我有以下意见
<row test="1" />
并希望在使用xmltextwriter时生成以下输出。
<?xml version="1.0"?>
<root xmlns="urn:default">
<row test="1" />
</root>
根据innerXML(MSDN)的文档,以下代码应该可以正常工作。
var outputdoc = new XmlDocument();
outputdoc.AppendChild(outputdoc.CreateXmlDeclaration("1.0", string.Empty, string.Empty));
outputdoc.AppendChild(outputdoc.CreateElement("root", "urn:default"));
outputdoc.DocumentElement.InnerXml = "<row test=\"1\" />";
var writer = new XmlTextWriter(filename, Encoding.UTF8) { Formatting = Formatting.Indented, Indentation = 1 };
outputdoc.WriteTo(writer);
writer.Close();
相反,我得到以下输出:
<?xml version="1.0"?>
<root xmlns="urn:default">
<row test="1" xmlns="" />
</root>
我需要做什么?
编辑:
我没有把可能的信息说得足够清楚。它应该是一个XML片段,所以在这两种情况下都可以是一个元素,多个元素和任意数量的子元素。例如:
<row test="1" />
或
<row test="1" />
<row test="2" />
或
<row><test>1</test></row>
或
<row><test>1</test></row>
<row test="2" />
最佳答案
必须使用system.xml吗?如果要使用xelement,那就很简单了:
XElement root = new XElement(XName.Get("root", "urn:default"));
XElement child = XElement.Parse("<row test=\"1\" />");
root.Add(child);
child.Name = XName.Get("row", "urn:default");
Console.WriteLine(root.ToString());
打印输出:
<root xmlns="urn:default">
<row test="1" />
</root>