如何使用 foreach 添加父节点



我在使用 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>

将子元素追加到名为"ex"的元素,然后将该元素追加到根

    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);
    }
您可以使用

此代码

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

最新更新