我在使用C#的Xml生成器中遇到了大麻烦。我找不到如何添加包含元素名称的父节点。
信息来自数据库并插入内存中的Xml文档。我必须按名称获取这些节点,因为我需要转换它们中的一些。
代码:
XmlElement xe = xd.CreateElement("xe");
foreach (XmlNode node in xd.DocumentElement.ChildNodes)
{
XmlNode imported = xd.ImportNode(node, true);
xe.AppendChild(imported["a"]);
xe.AppendChild(imported["b"]);
xe.AppendChild(imported["c"]);
xe.AppendChild(imported["d"]);
}
结果:
<node>
<a>1</a>
<b>2</b>
<c>3</c>
<d>4</d>
<a>1</a>
<b>2</b>
<c>3</c>
<d>4</d>
<a>1</a>
<b>2</b>
<c>3</c>
<d>4</d>
</node>
我需要什么:
<node>
<ex>
<a>1</a>
<b>2</b>
<c>3</c>
<d>4</d>
</ex>
<ex>
<a>1</a>
<b>2</b>
<c>3</c>
<d>4</d>
</ex>
<ex>
<a>1</a>
<b>2</b>
<c>3</c>
<d>4</d>
</ex>
</node>
答案 0 :(得分:3)
将子项追加到名为&#34; ex&#34;的元素,然后将该元素追加到根
foreach (XmlNode node in xd.DocumentElement.ChildNodes)
{
XmlNode imported = xd.ImportNode(node, true);
XmlElement ex = xd.CreateElement("ex");
ex.AppendChild(imported["a"]);
ex.AppendChild(imported["b"]);
ex.AppendChild(imported["c"]);
ex.AppendChild(imported["d"]);
xd.AppendChild(ex);
}
答案 1 :(得分:1)
您可以使用此代码
XmlElement xe = xd.CreateElement("xe");
foreach (XmlNode node in xd.DocumentElement.ChildNodes)
{
XmlNode imported = xd.ImportNode(node, true);
XmlElement child = xd.CreateElement("ex");
child.AppendChild(imported["a"]);
child.AppendChild(imported["b"]);
child.AppendChild(imported["c"]);
child.AppendChild(imported["d"]);
xe.AppendChild(child);
}