c# - xml文件拆分算法

标签 c# xml algorithm

我想通过指定的节点名称将一个 xml 文档拆分为多个 xml 文档,(类似于 string.Split(...)。)

示例:我有以下 xml 文档。

<root>
    <nodeA>
        Hello
    </nodeA>
    <nodeA>
        <nodeB>
            node b Text
        </nodeB>
        <nodeImage>
            image.jpg
        </nodeImage>
    </nodeA>
    <nodeA>
        node a text
    </nodeA>
</root>

我想通过'nodeImage'将这个xml文档拆分成3个部分,并保持原来的xml结构。 (注意:名为“nodeImage”的节点可以在任何地方)
1. nodeImage之前的xml
2. nodeImage的xml
3. nodeImage之后的xml

对于示例 xml,结果应为:

XML 文档 1:

<root>
    <nodeA>
        Hello
    </nodeA>
    <nodeA>
        <nodeB>
            node b Text
        </nodeB>
    </nodeA>
</root>

XML 文档 2:

<root>
    <nodeA>
        <nodeImage>
            image.jpg
        </nodeImage>
    </nodeA>
</root>

XML 文档 3:

<root>
    <nodeA>
        node a text
    </nodeA>
</root>

有谁知道这个要求是否有好的算法或现有代码示例?

更新说明:
如果在 xml 文档中只有一个名为“nodeImage”的节点,那么这个 xml 文档应该总是被拆分成 3 个 xml 文档。

最佳答案

XElement xe = XElement.Load(XMLFile);

foreach(XElement newXE in xe.Elements("nodeA"))
{
    XElement root = new XElement("root",newXE);
    root.Save(newFile);
}

关于c# - xml文件拆分算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18205271/

相关文章:

java - 具有顶部和底部边距的自定义按钮

algorithm - 排序 10 个数字的最快方法? (数字是 32 位)

c++ - 建模最短路径算法时的队列问题

c# - 通过添加总计来获取不同的列表

C#:如何构造这个要被覆盖的方法

c# - 处理来自消息框的回复 C#

c# - 使用 XElement 处理无效的 XML 字符

javascript - 自定义图表需要更多帮助

algorithm - 如何在两种数据类型之间创建完美的双射?

c# - .Net 中条件运算符的奇怪行为