【发布时间】:2021-01-16 00:27:16
【问题描述】:
我想根据某个节点的不同属性拆分一个 XML 文件,创建单独的 XML 文件,所有这些文件在文件的顶部都具有相同的节点,然后是节点 + 属性及其底层内容,直到该节点的末尾.
所有分离的 XML 文件都需要以相似的结束节点结束。
示例 XML 文件:
<?xml version=""1.0"" encoding=""UTF-8""?>
<node1>
<node2>
<node3 attribute='1'>item</node3>
<node3 attribute='2'>item</node3>
<node3 attribute='3'>item</node3>
</node2>
<node6 attribute='1'>
<node7>item = (node3 attribute2)</node7>
<node8>item = (node3 attribute3)</node8>
</node6>
<node6 attribute='2'>
<node9>item = (node3 attribute1)</node9>
<node10>item = (node3 attribute2)</node10>
</node6>
</node1>
在这个例子中,我想使用 node6 的属性作为创建新 XML 文件的断点。 生成 2 个 XML 文件,如下所示:
分离的 XML 1:
<?xml version=""1.0"" encoding=""UTF-8""?>
<node1>
<node2>
<node3 attribute='1'>item</node3>
<node3 attribute='2'>item</node3>
<node3 attribute='3'>item</node3>
</node2>
<node6 attribute='1'>
<node7>item = (node3 attribute2)</node7>
<node8>item = (node3 attribute3)</node8>
</node6>
分离的 XML 2:
<?xml version=""1.0"" encoding=""UTF-8""?>
<node1>
<node2>
<node3 attribute='1'>item</node3>
<node3 attribute='2'>item</node3>
<node3 attribute='3'>item</node3>
</node2>
<node6 attribute='2'>
<node9>item = (node3 attribute1)</node9>
<node10>item = (node3 attribute2)</node10>
</node6>
</node1>
我一直在寻找并处理所有这些答案,但它们并没有帮助我找到上述正确的代码。
https://stackoverflow.com/questions/30374533/split-xml-files-newbie
How to split an xml file in vb
Splitting Xml Document according to node
谁能帮我弄清楚最好的方法是什么?
【问题讨论】:
-
您熟悉 XSLT 吗?它可以为您完成这项工作,例如参见stackoverflow.com/questions/5578602/…。我也是一名 VB 程序员,但我不建议将这种或任何其他类似的编程语言用于此类任务(除非您的日程安排非常紧张,这迫使您玩肮脏的把戏而不是产生常规的解决方案)。我建议您检查 XSLT 并使用它而不是 VB。它是适合工作的工具,因此您可以事半功倍。
-
感谢 miroxlav 的信息。不幸的是,我完全不熟悉 XSLT。我的目标是为另一个用户编写一个 Windows 窗体程序,以便能够使用该程序拆分他们的 XML 文件。是否可以在 VB Windows 窗体中实现 XSLT 程序?