我有以下意见

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

07-28 14:09