XML::Parsing - 无法检测子节点
XML::Parsing - Unable to detect child nodes
样本XML文档
<?xml version="1.0" encoding="UTF-8"?>
<web-interface-classifier xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:noNamespaceSchemaLocation="WEB-INTERFACE-GROUP-CLASSIFIER.xsd" xmlns="parent/child1/granchild2/v1">
<classifier>
<key1>somevalue</key1>
</classifier>
<classifier>
<key2>somevalue</key2>
</classifier>
</web-interface-classifier>
用于解析上述 XML 文档的代码。
my $dom = XML::LibXML->load_xml(location => $filename);
my $xpc = XML::LibXML::XPathContext->new();
$xpc->registerNs( xsi => "http://www.w3.org/2001/XMLSchema-instance" );
foreach my $node ($xpc->findnodes("web-interface-classifier/classifier", $dom)) {
print Dumper($node);
}
我正在尝试解析 XML 文档并从 'classifier' 节点转储所需的键值对,但未检测到所需的子节点。能否请您指点一下?
您试图从 parent/child1/granchild2/v1
命名空间中查找 web-interface-classifier
和 classifier
类型的元素,但您要求查找 web-interface-classifier
和 [=13] 类型的元素=] 来自 null 命名空间。固定:
#!/usr/bin/env perl
use strict;
use warnings;
use v5.10;
use Data::Dumper;
use XML::LibXML;
use XML::LibXML::XPathContext;
my $dom = XML::LibXML->load_xml( IO => \*DATA );
my $xpc = XML::LibXML::XPathContext->new();
$xpc->registerNs( u => "parent/child1/granchild2/v1" );
for my $node ( $xpc->findnodes( "//u:web-interface-classifier/u:classifier", $dom ) ) {
say $node->toString();
}
__DATA__
<?xml version="1.0" encoding="UTF-8"?>
<web-interface-classifier xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:noNamespaceSchemaLocation="WEB-INTERFACE-GROUP-CLASSIFIER.xsd" xmlns="parent/child1/granchild2/v1">
<classifier>
<key1>somevalue</key1>
</classifier>
<classifier>
<key2>somevalue</key2>
</classifier>
</web-interface-classifier>
输出:
<classifier>
<key1>somevalue</key1>
</classifier>
<classifier>
<key2>somevalue</key2>
</classifier>
样本XML文档
<?xml version="1.0" encoding="UTF-8"?>
<web-interface-classifier xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:noNamespaceSchemaLocation="WEB-INTERFACE-GROUP-CLASSIFIER.xsd" xmlns="parent/child1/granchild2/v1">
<classifier>
<key1>somevalue</key1>
</classifier>
<classifier>
<key2>somevalue</key2>
</classifier>
</web-interface-classifier>
用于解析上述 XML 文档的代码。
my $dom = XML::LibXML->load_xml(location => $filename);
my $xpc = XML::LibXML::XPathContext->new();
$xpc->registerNs( xsi => "http://www.w3.org/2001/XMLSchema-instance" );
foreach my $node ($xpc->findnodes("web-interface-classifier/classifier", $dom)) {
print Dumper($node);
}
我正在尝试解析 XML 文档并从 'classifier' 节点转储所需的键值对,但未检测到所需的子节点。能否请您指点一下?
您试图从 parent/child1/granchild2/v1
命名空间中查找 web-interface-classifier
和 classifier
类型的元素,但您要求查找 web-interface-classifier
和 [=13] 类型的元素=] 来自 null 命名空间。固定:
#!/usr/bin/env perl
use strict;
use warnings;
use v5.10;
use Data::Dumper;
use XML::LibXML;
use XML::LibXML::XPathContext;
my $dom = XML::LibXML->load_xml( IO => \*DATA );
my $xpc = XML::LibXML::XPathContext->new();
$xpc->registerNs( u => "parent/child1/granchild2/v1" );
for my $node ( $xpc->findnodes( "//u:web-interface-classifier/u:classifier", $dom ) ) {
say $node->toString();
}
__DATA__
<?xml version="1.0" encoding="UTF-8"?>
<web-interface-classifier xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:noNamespaceSchemaLocation="WEB-INTERFACE-GROUP-CLASSIFIER.xsd" xmlns="parent/child1/granchild2/v1">
<classifier>
<key1>somevalue</key1>
</classifier>
<classifier>
<key2>somevalue</key2>
</classifier>
</web-interface-classifier>
输出:
<classifier>
<key1>somevalue</key1>
</classifier>
<classifier>
<key2>somevalue</key2>
</classifier>