无法在Perl中用XML::LibXML追加XML文档的文本
我试图使用perl和XML::LibXML附加XML文档的值。XML文档有多个时间设置,我需要更改为新时间,但我无法让我的程序进行更改。目前,它将加载XML文件并将其打印到新文档中,但不会更新我希望更改的设置。我对perl解析有点陌生,以前我写过一个excel解析器,但是这个XML解析器给我带来了一些问题 你能指出我在哪里犯了错误或者我遗漏了什么吗 下面是一个XML示例无法在Perl中用XML::LibXML追加XML文档的文本,xml,perl,parsing,nodes,xml-libxml,Xml,Perl,Parsing,Nodes,Xml Libxml,我试图使用perl和XML::LibXML附加XML文档的值。XML文档有多个时间设置,我需要更改为新时间,但我无法让我的程序进行更改。目前,它将加载XML文件并将其打印到新文档中,但不会更新我希望更改的设置。我对perl解析有点陌生,以前我写过一个excel解析器,但是这个XML解析器给我带来了一些问题 你能指出我在哪里犯了错误或者我遗漏了什么吗 下面是一个XML示例 <?xml version='1.0' ?><Settings xmlns='http://hme.com/
<?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>23400</Value>
</Setting>
感谢您的帮助,提前谢谢 Value元素不在
Name
元素内,因此Name
不应在层次结构中
在for
循环中,$reviewer
节点查找另一个名为Value
的元素,因此您也不应该在调用$doc->findnodes
时包含Value
您的
元素是否处于顶层也不清楚。可能需要使用路径/Settings/Setting…
或//Setting…
...
for my $reviewer ($doc->findnodes('//Setting[@SID="8"]')) {
my ($name) = $reviewer->findnodes('Value');
...
尝试同时使用/Settings/Setting运行时。。。或//设置。。。我得到以下错误:解析器错误:文档末尾的额外内容以及此错误26573:解析器错误:仅在文档开头允许XML声明尝试使用有效的XML文档作为输入。您的脚本将更正后的文档附加到原始文档中可能没有帮助。我确实怀疑并加载了一个未被覆盖的新xml,一旦我使用了有效的输入文件,错误就消失了,但我仍然无法获得要更改的值。因此我已经确定了问题,我在xml中的最高设置值是。如果我从设置括号中删除URL,它将正常运行。有办法处理此URL吗?
...
for my $reviewer ($doc->findnodes('//Setting[@SID="8"]')) {
my ($name) = $reviewer->findnodes('Value');
...