Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl XML::请回答细枝问题_Perl_Xml Twig - Fatal编程技术网

Perl XML::请回答细枝问题

Perl XML::请回答细枝问题,perl,xml-twig,Perl,Xml Twig,我在玩Perl中的XML::Twig库,我不太确定如何(甚至不确定是否)执行以下操作。我还没有完成代码,因为我甚至不知道从哪里开始。我真的有一些想法,我可以(希望)从那里去 因此,我想使用XML::Twig查找值“This_Is_My_Name”,它是标记“MyClass.Name”的子值。我想我可以做到这一点,但如果能提供指导,我将不胜感激 然后我想得到“MyClass.Code”链接值编号,在下面的示例中是“987654321” 希望这是有道理的。所以我不知道如何以这种方式四处走动 请帮忙:

我在玩Perl中的XML::Twig库,我不太确定如何(甚至不确定是否)执行以下操作。我还没有完成代码,因为我甚至不知道从哪里开始。我真的有一些想法,我可以(希望)从那里去

因此,我想使用XML::Twig查找值“This_Is_My_Name”,它是标记“MyClass.Name”的子值。我想我可以做到这一点,但如果能提供指导,我将不胜感激

然后我想得到“MyClass.Code”链接值编号,在下面的示例中是“987654321”

希望这是有道理的。所以我不知道如何以这种方式四处走动

请帮忙:)

所以我的XML文档如下所示

<Object Class="MyClass" Id="123456789">
    <Property Name="MyClass.Link">
        <LinkValue>
            <Id>2468</Id>
        </LinkValue>
    </Property>
    <Property Name="MyClass.Code">
        <LinkValue>
            <Id>987654321</Id>
        </LinkValue>
    </Property>
    <Property Name="MyClass.Name">
        <StringValue>This_Is_My_Name</StringValue>
    </Property>
</Object>

2468
987654321
这是我的名字

您可以使用XPath提取这些值。
This\u Is\u My\u Name
的xpath是
/Object/Property[@Name=“MyClass.Name”]/StringValue
,而
LinkValue
的xpath是
/Object/Property[@Name=“MyClass.code”]/LinkValue/Id
。守则是:

use XML::Twig;

my $twig = XML::Twig->new();

# parse the file
$twig->parsefile("x.xml");

# look for StringValue
@nodes=$twig->findnodes('/Object/Property[@Name="MyClass.Name"]/StringValue');
$stringVal=pop(@nodes)->text();
print $stringVal."\n";

# look for LinkValue
@nodes=$twig->findnodes('/Object/Property[@Name="MyClass.Code"]/LinkValue/Id');
$linkVal=pop(@nodes)->text();
print $linkVal;

在本例中,我通常使用树遍历方法,而不是使用XPath。此处
首先\u elt
查找属性,然后
字段
(相当于
第一个\u child()->文本
)获取链接值

#!/usr/bin/perl

use strict;
use warnings;
use XML::Twig;

my $twig = XML::Twig->new();

# parse the file
$twig->parsefile("so.xml");

# look for StringValue
my $property= $twig->first_elt( 'Property[@Name="MyClass.Code"]');
my $link= $property->field( 'LinkValue');
print $link;

谢谢:)我试试看!获取以下错误,有什么提示吗?无法在C:/草莓/perl/site/lib/XML/Twig.pm第3353行的未定义值上调用方法“get_xpath”。