我正在编写一个XML解析器,但在处理链接时遇到了问题。我试图解析XML层次结构中的Settings/Setting,然后查找'Value'节点。以下是XML的示例:
<?xml version='1.0' ?>
<Settings xmlns='http://hme.com/Settings.xsd'>
<Setting SID="0">
<Name>Store ID</Name>
<Value>72</Value>
</Setting>
<Setting SID="1">
<Name>Deprecated</Name>
<Value>0</Value>
</Setting>
<Setting SID="8">
<Name>Open Store Hours Sunday</Name>
<Value>25200</Value>
</Setting>
这是我用来解析XML的代码。
my $doc = $parser->parse_file($settings_file) or die "Couldn't parse timer settings\n";
#Sunday
for my $reviewer ($doc->findnodes('/Settings/Setting[@SID="8"]')) {
my ($name) = $reviewer->findnodes('Value');
$name->removeChildNodes();
$name->appendText('109800');
}
当我从XML文件中删除xmlns='http://hme.com/Settings.xsd'
时,替换值节点没有问题。但是一旦我将链接重新输入XML中,代码就停止工作,并且无法更新xml表格。有没有一种方法可以处理这个链接或者删除它,以便我可以正确地更新文件?
XPath error: Undefined namespace prefix
的错误。我使用了 XPath 沙箱,并能够加载我的 XML 并使用查询来查找节点,但当我尝试在代码中运行时,一无所获。这是我声明命名空间的方式:my $xpc = XML::LibXML::XPathContext->new(); $xpc->registerNs('xsd', 'http://hme.com/Settings.xsd');
- Taylor Stevens