【问题标题】:Can you copy/import a node from one XML document to another?您可以将节点从一个 XML 文档复制/导入到另一个吗?
【发布时间】:2012-04-21 17:53:50
【问题描述】:

我有两个格式如下的 XML 文档:

第一个文档:

<person> 
  <name>David</name> 
</person>

第二份文件:

<person> 
  <name>David</name> 
  <hobby>Skating</hobby> 
</person>

如果第二个节点&lt;hobby&gt;Skating&lt;/hobby&gt; 不存在,是否可以将它复制到第一个 XML 中?我正在使用 XML::SemanticDiff 来查找差异的 XPath,并使用 LibXML 将文本附加到在该节点中所做的更改:

for my $node ($root->findnodes($path_change)) { 
  $root->removeChildNodes(); 
  $node->appendText("This is a test"); 
}

【问题讨论】:

  • @jdwilemo 你能告诉我怎么做吗?不确定如何检查该节点是否存在

标签: xml perl


【解决方案1】:
my ($dst_person) = $dst_root->findnodes('//person');
my ($dst_hobby) = $dst_person->findnodes('hobby');
if (!$dst_hobby) {
   my ($src_hobby) = $src_root->findnodes('//person/hobby');
   $dst_person->appendChild( $src_hobby->clone(1) );
}

【讨论】:

  • @user1322582,我的代码中有一个双重错误。 (if (() == ...) 应该是 if (!( () = ... ))。)通过使用更易读的东西来修复。
  • xml架构结构未知怎么办?我想使用属性名称克隆一个节点,例如这种格式的“some_string”? 有没有办法遍历 XMl 文档寻找“some_string”?
  • @user1322582,是的,XPath 可以查找属性。
猜你喜欢
  • 1970-01-01
  • 2014-09-30
  • 1970-01-01
  • 2016-03-30
  • 2012-11-22
  • 1970-01-01
  • 1970-01-01
  • 2010-10-26
  • 1970-01-01
相关资源
最近更新 更多