5

我正在学习XML:LibXML在 Perl 中使用一个项目,我看到了这个例子

目标是构建这个 XML 文件:

<?xml version="1.0" encoding="utf-8"?>
<assets xmlns="http://bricolage.sourceforge.net/assets.xsd">
  <story id="1234" type="story">
    <name>Catch as Catch Can</name>
  </story>
</assets>

作者使用下addChild创建:storyassets

my $story = $dom->createElement('story');

然后他使用addChild(结合createAttribute)来指定的属性story

$story->addChild( $dom->createAttribute( id => 1234));

看上面的 XML 示例(对 XML 了解不多),id="1234"它不是故事的孩子,而是它的一个属性,那么为什么我们在最后一行使用addChild呢?

4

3 回答 3

3

属性是一种子类型。

于 2012-09-10T19:21:09.197 回答
2

通过调用createAttributeor createElement,您可以创建一个新节点。通过调用addChild,您可以将这样的节点附加到其父节点中。XML 中有几种类型的节点:元素、属性,还有文本、注释或处理指令。

于 2012-09-10T19:21:18.223 回答
1

由于,$story是一个XML::LibXML::Element,您可能会发现使用该setAttribute方法更自然:

my $store = $dom->createElement('story');
$store->setAttribute(id => '1234');

这是您正在做的更长createAttributeaddChild代码的简写。

于 2012-09-10T19:27:13.310 回答