Bob*_*Bob 13 php simplexml css-selectors
我正在尝试根据属性的值访问元素的内容.使用PHP SimpleXML.我有以下XML设置:
<DocSum>
<Id>21242919</Id>
<Item Name="Author" Type="String">Nguyen T</Item>
<Item Name="Title" Type="String">[Hemoptysis and spontaneous rupture of a primary renal angiosarcoma: a case report.]</Item>
</DocSum>
<DocSum>
<Id>21242919</Id>
<Item Name="Author" Type="String">Oliveira GC</Item>
<Item Name="Title" Type="String">Disclosing ambiguous gene aliases by automatic literature profiling.</Item>
</DocSum>
<DocSum>
<Id>21242919</Id>
<Item Name="Author" Type="String">Vanderwall DE</Item>
<Item Name="Title" Type="String">Metformin and digestive disorders.</Item>
</DocSum>
Run Code Online (Sandbox Code Playgroud)
这些是书.在这种情况下,我正试图获得标题.到目前为止我所拥有的是:
$xml = simplexml_load_file(url);
$docs = $xml->DocSum;
foreach($docs as $book){
// Each book individual
}
Run Code Online (Sandbox Code Playgroud)
评论的地方我尝试了很多东西.
sco*_*fey 20
SimpleXML对象上的此XPath查询将返回属性中具有值为"Author" DocSum的Item子节点的所有节点,Name并在文本节点中返回值"Olivera GC":
$nodes = $xml->xpath('//DocSum[Item[@Name="Author" and .="Oliveira GC"]]');
$book = $nodes[0];
print_r($book);
Run Code Online (Sandbox Code Playgroud)
好吧,我怀疑解决方案是XPATH......
如果您想通过ID获取图书的标题,则可以使用以下查询:
$query = '//DocSum/Id[contains(., "21232919")]';
Run Code Online (Sandbox Code Playgroud)
如果您正在尝试搜索图书的标题:
$query = '//DocSum/Item[@Name="Title" AND contains(., "Metformin")]';
Run Code Online (Sandbox Code Playgroud)
然后运行它:
$xml = simplexml_load_file($url);
$results = $xml->xpath($query);
foreach ($results as $titleElement) {
$book = simplexml_import_dom(dom_import_simplexml($titleElement)->parentNode);
// Handle the book here
}
Run Code Online (Sandbox Code Playgroud)
我在simplexml和domdocument之间来回转换,因为这似乎是遍历树的唯一记录的方式...
| 归档时间: |
|
| 查看次数: |
23817 次 |
| 最近记录: |