Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.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

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::LibXML追加XML文档的文本_Xml_Perl_Parsing_Nodes_Xml Libxml - Fatal编程技术网

无法在Perl中用XML::LibXML追加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/

我试图使用perl和XML::LibXML附加XML文档的值。XML文档有多个时间设置,我需要更改为新时间,但我无法让我的程序进行更改。目前,它将加载XML文件并将其打印到新文档中,但不会更新我希望更改的设置。我对perl解析有点陌生,以前我写过一个excel解析器,但是这个XML解析器给我带来了一些问题

你能指出我在哪里犯了错误或者我遗漏了什么吗

下面是一个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>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');
    ...