我有以下XML文件:
<?xml version="1.0" encoding="UTF-8"?>
<result name="response">
<doc>
<str name="index">2</str>
<str name="summary">A summary</str>
<str name="title">A Title</str>
<arr name="media">
<str>/image/123.jpg</str>
</arr>
</doc>
</result>
我正在抓取内容并在PHP中创建SimpleXMLElement。我需要能够根据它的名称值来获取特定标记的内容。例如。如果我试图回应出这样的“总结”:
echo $xmlObj->doc->str['name']->summary;
我知道这不起作用,但会是什么?我看了很多类似的问题,但没有找到这个具体问题。欢呼声。
答案 0 :(得分:1)
使用XPath(http://www.w3schools.com/php/func_simplexml_xpath.asp)
<?php
$string = <<<XML
<a>
<b>
<c>text</c>
<c>stuff</c>
</b>
<d>
<c>code</c>
</d>
</a>
XML;
$xml = new SimpleXMLElement($string);
/* Search for <a><b><c> */
$result = $xml->xpath('/a/b/c');
while(list( , $node) = each($result)) {
echo '/a/b/c: ',$node,"\n";
}
/* Relative paths also work... */
$result = $xml->xpath('b/c');
while(list( , $node) = each($result)) {
echo 'b/c: ',$node,"\n";
}
?>
答案 1 :(得分:0)
问题的解决方案如下:
$summary = $xmlObj->xpath('doc/str[@name="summary"]');
if($summary) {
echo $summary[0];
}
它涉及使用XPath作为a4arpan指出。