我目前正在尝试从SIMPLEXML / XPATH查询生成的数组中提取值。我的尝试没有成功,如果有人可以采取看起来将非常感激。
我只想提取ReclaimDate。我已经尝试了this post上的一些功能和一些建议而没有运气。
Array
(
[0] => Array
(
[0] => SimpleXMLElement Object
(
[@attributes] => Array
(
[ReclaimDate] => 05/15/2008
[ReclaimPrice] => 555555555
[_Owner] => ownername
)
)
)
答案 0 :(得分:1)
如果我不得不采取刺,我同意@Frank Farmer所说的应该有效:
// if $myVar is what you print_r'ed
echo (string)$myVar[0][0]['ReclaimDate'];
或者
echo (string)$myVar[0][0]->attributes('ReclaimDate');
http://www.php.net/manual/en/simplexml.examples-basic.php#example-4587
答案 1 :(得分:0)
感谢Frank Farmer和Dan Beam解决了这个问题。
这有效:echo (string)$check_reo[0][0]['ReclaimDate']
对于那些希望使用SimpleXML和XPATH从XML文件中提取和编写一些基本逻辑的人来说,这对我有用。
$xmlstring = <<<XML <?xml version='1.0' standalone='yes'?> <YOURXMLGOESHERE>TEST</YOURXMLGOESHERE> XML;
$xpathcount = simplexml_load_string($xmlstring); // Load XML for XPATH Node Counts
$doc = new DOMDocument(); // Create new DOM Instance for Parsing
$xpathcountstr = $xpathcount->asXML(); // Xpath Query
$doc->loadXML($xpathcountstr); // Load Query Results
$xpathquery = array($xpathcount->xpath("//XMLNODEA[1]/XMLNODEB/*[name()='KEYWORDTOCHECKIFXMLCEXISTS']"));
print_r ($xpathquery) // CHECK Array that is returned from the XPATH query
`阵列 ( [0] =&gt;排列 ( [0] =&gt; SimpleXMLElement对象 ( [@attributes] =&gt;排列 ( [ReclaimDate] =&gt; 2008年5月15日 [ReclaimPrice] =&gt; 555555555 [_Owner] =&gt; OWNERNAME )
)
) // Array RETURNED`
echo (string)$xpathquery[0][0]['ReclaimDate'] // EXTRACT THE VALUE FROM THE ARRAY COLUMN;
这个网站帮助我更好地理解XPATH如何使用比我之前所知的更多功能轻松搜索XML。
http://zvon.org/xxl/XPathTutorial/Output/examples.html
以下是适用于我的简单XML函数
$xmlread = simplexml_load_string($xmlstring, "simple_xml_extended");
}
}
}`
以下是使用基于属性的XML结果
提取单个值时的Function操作 $GETVAR1 = $xmlread->XMLNODE1->XMLNODE2->XMLNODE3->XMLNODE4->XMLNODE5[0]->Attribute('XMLNODE5ATTRIBUTE');
这可能不是最有效或最好的方法,但它结束了我的工作。希望这可以帮助那些仍然不清楚SIMPLEXML和XPATH的人。
进一步了解的其他链接:http://www.phpfreaks.com/tutorial/handling-xml-data