gpt4 book ai didi

xml - 如何在 Perl 中使用 XML::Twig 选择 xml 文件的特定子节点

转载 作者:数据小太阳 更新时间:2023-10-29 02:30:50 25 4
gpt4 key购买 nike

这一定是个愚蠢的问题,但我有点卡住了:

我有一个 XML 文件,您可以在此处查看示例:

<?xml version="1.0" encoding="utf-16"?>
<!DOCTYPE tmx SYSTEM "56.dtd">
<body>
<tu changedate="20130625T175037Z"">
<tuv xml:lang="pt-pt">
<prop type="x-context-pre">&lt;seg&gt;Some text.&lt;/seg&gt;</prop>
<prop type="x-context-post">&lt;seg&gt;Other text.&lt;/seg&gt;</prop>
<seg>The text I'm interested.</seg>
</tuv>
<tuv xml:lang="it">
<seg>And it's translation in italian.</seg>
</tuv>
</tu>

.... followed by other <tu>'s
</body>

因为它是一个巨大的文件,我使用 XML::Twig 来解析它并获取我感兴趣的部分。我对 seg 的节点内容以及 tu 的节点属性特别感兴趣。

这是我目前得到的代码:

use 5.010;

use strict;
use warnings;

use XML::Twig;



my $filename = 'filename.tmx';
my $out_filename = 'out.xml';
open my $out, '>', $out_filename;
binmode $out;

my $original_twig = new XML::Twig (pretty_print => 'nsgmls', twig_handlers => {tu => \&original_tu});
$original_twig->parsefile($filename);




sub original_tu {
my($twig, $original_tu) = @_;
my $original_seg = $original_tu-> first_child('./tuv/seg')->text;

}

Perl(或者我应该说 XML::Twig)告诉我我有: 错误的导航条件 './tuv/seg' ()

有谁知道如何访问 seg 节点的文本,如果您还没有厌烦我,如何访问 tu 节点的 changedate 属性?

非常感谢。

大森

最佳答案

这是访问该节点和属性的一种方法:

my $original_seg = $original_tu->first_child('tuv')->first_child('seg')->text;
my $date = $original_tu->att('changedate');

关于xml - 如何在 Perl 中使用 XML::Twig 选择 xml 文件的特定子节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18081907/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com