PHP xpath问题->;第(0)项->;节点值
基于以下XML,我想检索特定节点(ID)的产品名称和图像 如果我执行$info->item(0)->nodeValue,我会将这两个信息收集在一起,而不是单独收集:PHP xpath问题->;第(0)项->;节点值,php,xml,xpath,xmlnode,Php,Xml,Xpath,Xmlnode,基于以下XML,我想检索特定节点(ID)的产品名称和图像 如果我执行$info->item(0)->nodeValue,我会将这两个信息收集在一起,而不是单独收集: Name of product A Product image name A 但是我想根据客户ID获取->产品->节点价值和图像->节点价值。 我该怎么做?例如,执行$info->item(0)->product->nodeValue不起作用 ->item(0)->nodeValue提供该特定项中的所有内容(在本例中为0)结果返回
Name of product A
Product image name A
但是我想根据客户ID获取->产品->节点价值和图像->节点价值。
我该怎么做?例如,执行$info->item(0)->product->nodeValue不起作用
->item(0)->nodeValue提供该特定项中的所有内容(在本例中为0)结果返回单个节点(客户端)。该节点的nodevalue是它下面的所有文本 尝试:
“//客户端[@id='A']/*[name()='product'或name()='image']”将返回两个节点。如果要按位置使用它们,请记住检查名称。使用XPath获取节点。XPath位置路径的结果是节点列表。->项(0)返回此列表中的第一个节点。这是
client
元素节点
调用domeElement:$nodeValue始终将所有子代文本节点作为字符串返回。在本例中,文本节点位于产品
和图像
元素节点内
如果希望单独获取这些值,您将有权获取子节点
$dom = new DOMDocument();
$dom->loadXML($xml);
$xpath = new DOMXpath($dom);
foreach ($xpath->evaluate('//client[@id="A"]/*[self::product or self::image]') as $child) {
echo $child->localName, ': ', $child->nodeValue, "\n";
}
输出:
product: Name of product A
image: Product image name A
$dom = new DOMDocument();
$dom->loadXML($xml);
$xpath = new DOMXpath($dom);
foreach ($xpath->evaluate('//client[@id="A"]/*[self::product or self::image]') as $child) {
echo $child->localName, ': ', $child->nodeValue, "\n";
}
product: Name of product A
image: Product image name A