如何将子节点结构从一个XML文件复制到另一个XML文件(合并两个XML文件)?

用户名

我有以下两个XML文件:

文件1

<?xml version="1.0"?>
<main>
  <node1>
    <subnode1>
      <value1>101</value1>
      <value2>102</value2> 
      <value3>103</value3> 
    </subnode1>
    <subnode2>
      <value1>501</value1>
      <value2>502</value2> 
      <value3>503</value3> 
    </subnode2>
  </node1>
</main>

文件2

<?xml version="1.0"?>
<main>
  <node1>
    <subnode1>
      <value1>454</value1>
      <value2>471</value2> 
      <value3>498</value3> 
    </subnode1>
    <subnode2>
      <value1>723</value1>
      <value2>645</value2> 
      <value3>823</value3> 
    </subnode2>
  </node1>
</main>

在Delphi中,我想将<node1>...</node1>File2的完整结构添加到更名为File1的File1中<node2>...</node2>因此结果应如下所示:

<?xml version="1.0"?>
<main>
  <node1>
    <subnode1>
      <value1>101</value1>
      <value2>102</value2> 
      <value3>103</value3> 
    </subnode1>
    <subnode2>
      <value1>501</value1>
      <value2>502</value2> 
      <value3>503</value3> 
    </subnode2>
  </node1>
  <node2>
    <subnode1>
      <value1>454</value1>
      <value2>471</value2> 
      <value3>498</value3> 
    </subnode1>
    <subnode2>
      <value1>723</value1>
      <value2>645</value2> 
      <value3>823</value3> 
    </subnode2>
  </node2>
</main>

我已经<node1>...</node1>在问题如何提取节点的内部文本和XML作为字符串中问过如何提取块了(这确实是一个XY问题,很抱歉),我可以设计出一种将XML作为字符串处理的解决方案。

但我想可能会有更好的解决方案直接与XML功能一起使用。那么如何在Delphi 10中实现呢?

雷米·勒博

将XML文件解析为TXMLDocument/IXMLDocument对象之后,将IXMLNode对象从一个文档克隆/移动到另一个文档就变得很简单了(请参阅IXMLNode.CloneNode(),或IXMLNodeList.Add()IXMLNodeList.Remove())。尽管无法重命名节点,但是可以使用所需名称创建一个新节点(请参阅参考资料IXMLNode.AddChild()),然后在新节点下克隆/移动旧节点的子节点。

您不应将XML字符串用于这些任务。而是操纵DOM树。因此,您将在File2中获得IXMLNodefor,<node1>在File1中添加一个IXMLNodefor <node2>,然后克隆/移动<subnode1><subnode2>IXMLNodeFile2中的文件移动IXMLNodeFile1中的文件。


话虽这么说,为什么要按顺序命名您的元素?<node><subnode><value>,等就足够了就好了。根据需要<node>您可以在一个文档中包含多个,多个<subnode>,多个<value>XML非常适合使用重复的元素名称。您实际上并不需要在元素名称中使用序号,例如:

<?xml version="1.0"?>
<main>
  <node>
    <subnode>
      <value>101</value>
      <value>102</value> 
      <value>103</value> 
    </subnode>
    <subnode>
      <value>501</value>
      <value>502</value> 
      <value>503</value> 
    </subnode>
  </node>
  <node>
    <subnode>
      <value>454</value>
      <value>471</value> 
      <value>498</value> 
    </subnode>
    <subnode>
      <value>723</value>
      <value>645</value> 
      <value>823</value> 
    </subnode>
  </node>
</main>

如果您确实需要按数字进行区分,则可以改用属性,例如:

<?xml version="1.0"?>
<main>
  <node id="1">
    <subnode id="1">
      <value id="1">101</value>
      <value id="2">102</value> 
      <value id="3">103</value> 
    </subnode>
    <subnode id="2">
      <value id="1">501</value>
      <value id="2">502</value> 
      <value id="3">503</value> 
    </subnode>
  </node>
  <node id="2">
    <subnode id="1">
      <value id="1">454</value>
      <value id="2">471</value> 
      <value id="3">498</value> 
    </subnode>
    <subnode id="2">
      <value id="1">723</value>
      <value id="2">645</value> 
      <value id="3">823</value> 
    </subnode>
  </node>
</main>

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将文件从一个目录复制到另一个

来自分类Dev

将文件从一个目录复制到另一个目录

来自分类Dev

如何在Python中将多个XML节点复制到另一个文件

来自分类Dev

如何将文本文件复制到另一个文件?

来自分类Dev

如何使用Nokogiri将节点从一个xml文件复制到另一个xml文件?

来自分类Dev

如何从一个文件复制到另一个?

来自分类Dev

将文件从一个拉链复制到另一个?

来自分类Dev

XSLT将元素从一个文件复制到另一个符合两个条件的文件

来自分类Dev

将文件从一个拉链复制到另一个?

来自分类Dev

将文件从一个NAS复制到另一个

来自分类Dev

如何将文件从一个目录复制到另一目录?

来自分类Dev

如何将每行X行从一堆文件复制到另一个文件?

来自分类Dev

将文件从一个目录复制到另一个目录

来自分类Dev

如何将组图层集从一个文件复制到另一个文件?

来自分类Dev

将文件从一个目录复制到另一个目录

来自分类Dev

如何在Python中将多个XML节点复制到另一个文件

来自分类Dev

如何将文本文件复制到另一个文件?

来自分类Dev

将条目从一个keepass文件复制到另一个

来自分类Dev

如何将xml标记及其值复制到同一根标记下的另一个xml文件中

来自分类Dev

同步两个文件夹,成功后将一个文件从一个位置复制到另一个

来自分类Dev

如何将AIX上的文件从一个FS复制到另一个FS?

来自分类Dev

如何将每个文件的目录从一个硬盘复制到另一个硬盘?

来自分类Dev

将权限从一个文件复制到另一个文件

来自分类Dev

如何将文件的其余行复制到另一个文件

来自分类Dev

如何将一个目录中的xml文件复制到另一目录

来自分类Dev

将文件系统元数据(modifyDate 等)从一个文件复制到另一个文件

来自分类Dev

如何将一个文件夹复制到另一个文件夹

来自分类Dev

我有两个文件夹,里面装满了名称相同但内容不同的文件。如何匹配它们以将数据从一个文件复制到另一个文件?

来自分类Dev

Powershell:如何将文件从一个目录复制到另一个目录

Related 相关文章

  1. 1

    将文件从一个目录复制到另一个

  2. 2

    将文件从一个目录复制到另一个目录

  3. 3

    如何在Python中将多个XML节点复制到另一个文件

  4. 4

    如何将文本文件复制到另一个文件?

  5. 5

    如何使用Nokogiri将节点从一个xml文件复制到另一个xml文件?

  6. 6

    如何从一个文件复制到另一个?

  7. 7

    将文件从一个拉链复制到另一个?

  8. 8

    XSLT将元素从一个文件复制到另一个符合两个条件的文件

  9. 9

    将文件从一个拉链复制到另一个?

  10. 10

    将文件从一个NAS复制到另一个

  11. 11

    如何将文件从一个目录复制到另一目录?

  12. 12

    如何将每行X行从一堆文件复制到另一个文件?

  13. 13

    将文件从一个目录复制到另一个目录

  14. 14

    如何将组图层集从一个文件复制到另一个文件?

  15. 15

    将文件从一个目录复制到另一个目录

  16. 16

    如何在Python中将多个XML节点复制到另一个文件

  17. 17

    如何将文本文件复制到另一个文件?

  18. 18

    将条目从一个keepass文件复制到另一个

  19. 19

    如何将xml标记及其值复制到同一根标记下的另一个xml文件中

  20. 20

    同步两个文件夹,成功后将一个文件从一个位置复制到另一个

  21. 21

    如何将AIX上的文件从一个FS复制到另一个FS?

  22. 22

    如何将每个文件的目录从一个硬盘复制到另一个硬盘?

  23. 23

    将权限从一个文件复制到另一个文件

  24. 24

    如何将文件的其余行复制到另一个文件

  25. 25

    如何将一个目录中的xml文件复制到另一目录

  26. 26

    将文件系统元数据(modifyDate 等)从一个文件复制到另一个文件

  27. 27

    如何将一个文件夹复制到另一个文件夹

  28. 28

    我有两个文件夹,里面装满了名称相同但内容不同的文件。如何匹配它们以将数据从一个文件复制到另一个文件?

  29. 29

    Powershell:如何将文件从一个目录复制到另一个目录

热门标签

归档