Xml Twig忽略了一些元素?

Xml Twig忽略了一些元素?,xml,perl,xml-parsing,xml-twig,Xml,Perl,Xml Parsing,Xml Twig,XML的一部分如下所示: <ipcEntry kind="1" symbol="A01B0013080000" ipcLevel="A" entryType="K" lang="EN" nocore="yes"> <textBody> <title> <titlePart> <text>for working subsoil</text>

XML的一部分如下所示:

<ipcEntry kind="1" symbol="A01B0013080000" ipcLevel="A" entryType="K" lang="EN" nocore="yes">
    <textBody>
        <title>
            <titlePart>
                <text>for working subsoil</text>
            </titlePart>
        </title>
    </textBody>
    <ipcEntry kind="2" symbol="A01B0013100000" ipcLevel="A" entryType="K" lang="EN" nocore="yes">
        <textBody>
            <title>
                <titlePart>
                    <text>Special implements for lifting subsoil layers</text>
                </titlePart>
            </title>
        </textBody>
        <ipcEntry kind="3" symbol="A01B0013120000" ipcLevel="A" entryType="K" lang="EN" nocore="yes">
            <textBody>
                <title>
                    <titlePart>
                        <text>Means for distributing the layers on the surface</text>
                    </titlePart>
                </title>
            </textBody>
        </ipcEntry>
    </ipcEntry>
</ipcEntry>
似乎我无法获取文本:
用于提升底土层的特殊工具
我猜这是因为
有另一个子条目

我可以得到
在表面上分布层的方法

我做错了什么


谢谢,

来自XML::Twig文档:

不应使用此方法, 总是冲洗树枝,而不是元素

清除操作与“冲洗”相同 但它不会打印树枝。信息技术 只删除所有具有 到目前为止已经完全解析了

用delete函数替换purge函数,以相反顺序打印所有ipcEntry元素的文本,即从最里面的ipcEntry元素开始

sub ipcEntrySub {
  my ($twig_obj, $element) = @_;

  print $element->{'att'}->{'symbol'} . "\n";
  print "Kind: $element->{'att'}->{'kind'}\n";
  print $element->text . "\n";

  $element->delete;
}

从XML::Twig文档中:

不应使用此方法, 总是冲洗树枝,而不是元素

清除操作与“冲洗”相同 但它不会打印树枝。信息技术 只删除所有具有 到目前为止已经完全解析了

用delete函数替换purge函数,以相反顺序打印所有ipcEntry元素的文本,即从最里面的ipcEntry元素开始

sub ipcEntrySub {
  my ($twig_obj, $element) = @_;

  print $element->{'att'}->{'symbol'} . "\n";
  print "Kind: $element->{'att'}->{'kind'}\n";
  print $element->text . "\n";

  $element->delete;
}

您希望输出的具体内容是什么?基本上,要打印其中的所有元素,以及清除时每个元素的属性,您需要在当前元素之前释放所有元素。您只需将元素的父元素保留为空,即您仍然可以访问它们的属性,但它们的所有内容都将丢失。因此,删除确实是你想要的。+1米罗德,我认为你的评论比我的回答更清楚。如果您能在XML::Twig Perl文档中包含上述注释,那就太好了。对于如何访问属性,而不是清除元素后的内容,我当然感到困惑。同样非常感谢令人敬畏的XML::Twig。您希望输出是什么?基本上,要打印其中的所有元素,以及清除时每个元素的属性,您需要在当前元素之前释放所有元素。您只需将元素的父元素保留为空,即您仍然可以访问它们的属性,但它们的所有内容都将丢失。因此,删除确实是你想要的。+1米罗德,我认为你的评论比我的回答更清楚。如果您能在XML::Twig Perl文档中包含上述注释,那就太好了。对于如何访问属性,而不是清除元素后的内容,我当然感到困惑。也非常感谢这张很棒的XML::Twig。XML的大小是8GB,如果我不每次都清除它,我的内存会填满的,不是吗?或者很可能我不明白“净化”潜艇背后的想法。请原谅我之前的回答不正确。您当然应该使用“delete”函数来剪切元素(而不是使用“purge”函数)以释放内存。希望这有帮助。XML的大小是8GB,如果我不每次清除它,我的内存会填满,不是吗?或者很可能我不明白“净化”潜艇背后的想法。请原谅我之前的回答不正确。您当然应该使用“delete”函数来剪切元素(而不是使用“purge”函数)以释放内存。希望这有帮助。