我收到基于我发送给服务器的请求的XML响应,它确实返回了一组有效的结果,我可以使用print_r()将其转储到屏幕上 结果集如下所示(编辑:这是文件的确切结构):
<root>
<main_node1>
<value1>one</value1>
<value2>two</value2>
</main_node1>
<main_node2>
<anothervalue>whatever</anothervalue>
</main_node2>
<recordset>
<record>
<value1>one</value1>
<value2>two</value2>
</reocrd>
<record>
<value1>one</value1>
<value2>two</value2>
</reocrd>
<record>
<value1>one</value1>
<value2>two</value2>
</reocrd>
</recordset>
</root>
当我使用该行时:
$xml = simplexml_load_string($xmlRequest);
$records = $xml->recordset->record;
当我尝试使用诸如
之类的索引访问记录集中的特定记录时,我可以使用foreach循环遍历$ records数组而没有任何问题$record = $xml->recordset->record[$index];
我收到了一个NULL valeu。我也尝试将结果转换为(数组)到目前为止没有成功。
我看过的关于simpleXML的每个文档都说可以通过索引访问XML节点,有人可以告诉我这里可能做错了吗?
编辑:所以记录集不是文档的根目录但我可以使用$ xml-&gt;记录集 - &gt;记录表示法将记录列表加载到我的$ records变量中并使用foreach循环。
答案 0 :(得分:1)
我使用
解决了我的问题$records = $xml->xpath('//record');
符号,我现在可以通过索引访问任何记录。
感谢您的努力,感谢您的努力。
答案 1 :(得分:0)
你没有得到任何回报,因为'recordset'节点是$ xml变量的根(不确定我是否正确描述了这一点)。
这应该有效:
<?php
//Example xml, replace this with $xml = simplexml_load_string($xmlRequest);
$xml = simplexml_load_string('<?xml version="1.0"?>
<recordset><record><value1>one</value1><value2>two</value2></record>
<record><value1>one</value1><value2>two</value2></record>
</recordset>');
$record = $xml->record[0];
print_r ($record);
&GT;
答案 2 :(得分:0)
另一种不使用xpath的方法是:
以此为基础:
$record = $xml->recordset->record[$index];
你必须将索引设为int,因为某些原因只是接收它不起作用。所以:
$index = trim($_GET['index']);
$index = intval($index);
现在这将有效:
$record = $xml->recordset->record[$index];
最诚挚的问候, RaphaelDDL