Php 如何仅获取所需的xpath元素?
我有一个xml文件,我想将节点的秩属性存储在一个变量中 我试过:Php 如何仅获取所需的xpath元素?,php,xml,xpath,simplexml,Php,Xml,Xpath,Simplexml,我有一个xml文件,我想将节点的秩属性存储在一个变量中 我试过: echo $var = $xmlobj->xpath("//Listing[@rank]"); 它只打印ArrayArray,但没有效果 如何做到这一点 if($xmlobj = simplexml_load_string(file_get_contents($xml_feed))) { foreach($xmlobj as $listing) {
echo $var = $xmlobj->xpath("//Listing[@rank]");
它只打印ArrayArray,但没有效果
如何做到这一点
if($xmlobj = simplexml_load_string(file_get_contents($xml_feed)))
{
foreach($xmlobj as $listing)
{
// echo 'Session ID: ' . $sessionId = $listing->sessionId . '<br />';
// echo 'Result Set: ' . $ResultSet = $listing->ResultSet . '<br />';
print_r($xmlobj->xpath("//Listing[@rank]"));
// $result = $xmlobj->xpath("/page/");
// print_r($result);
}
}
给你
<page>
<ResultSet id="adListings" numResults="3">
<Listing rank="1" title="Reliable Local Moving Company" description="TEST." siteHost="www.example.com">
</Listing>
在使用发布的示例xml后进行编辑:
- 我最初的回答有点偏离正轨——如果所选元素有内部文本(这里不是这种情况),对字符串的转换将为您提供所选元素的内部文本
选择所有具有“rank”属性的“Listing”元素。如果要选择属性本身,请使用“//Listing[@rank]”
“//Listing/@rank”
- 要输出属性,请使用simplexmlement和数组语法:
$xmlement['rank']
foreach($xmlobj as $listing)
{
$var = $xmlobj->xpath("//Listing/@rank");
foreach ($var as $xmlElement)
{
echo $xmlElement['rank'];
}
}
或
应该有用
在第一种情况下,$xmlElement将只包含'rank'属性,而在第二种情况下,它将包含完整的'Listing'元素(因此允许标题输出)。感谢回复Henrik。不幸的是,它不起作用,我的代码实现在上面?嗯,奇怪-它打印了什么?好的,这会提示xpath实际上不匹配任何东西-你能发布一个xml示例吗?谢谢你的帮助,在上面发布了好的,花了一段时间-自从上次使用simpleXML以来,我似乎忘记了一些基本知识;)
foreach($xmlobj as $listing)
{
$var = $xmlobj->xpath("//Listing/@rank");
foreach ($var as $xmlElement)
{
echo $xmlElement['rank'];
}
}
foreach($xmlobj as $listing)
{
$var = $xmlobj->xpath("//Listing[@rank]");
foreach ($var as $xmlElement)
{
echo $xmlElement['rank'];
echo $xmlElement['title']; // Added to demonstrate difference
}
}