首页 > 解决方案 > 如何在 C# 中基于匹配 XmlNode 从层次结构中克隆单个 XML

问题描述

这是 XML 结构:

<root>
    <listOfItems>
        <item>
            <lineItem>1</lineItem>
            <itemDetail>
                <partNum>A1</partNum>
                <color>red</color>
                <qty>4</qty>
            </itemDetail>
        </item>
        <item>
            <lineItem>2</lineItem>
            <itemDetail>
                <partNum>B2</partNum>
                <color>blue</color>
                <qty>2</qty>
            </itemDetail>
        </item>
        <item>
            <lineItem>3</lineItem>
            <itemDetail>
                <partNum>C3</partNum>
                <color>green</color>
                <qty>1</qty>
            </itemDetail>
        </item>
    </listOfItems>
</root>

知道 partNum 是 B2,我将如何克隆 B2 所属的整个项目,所以我有 2 个相同的 B2 项目。

标签: c#xmlclone

解决方案


您可以使用CloneNode函数复制节点并使用AppendChild将其附加到层次结构中的相关位置。

// find the node
var target = doc.SelectSingleNode("root/listOfItems/item/itemDetail/partNum[text()='B2']");

// clone
var clonedNode = target.ParentNode.CloneNode(true);

// attach
target.ParentNode.ParentNode.AppendChild(clonedNode);

推荐阅读