我有一个XML文件。这是一个小版本。
<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fr">
<title>Liste des ebooks</title>
<updated>2012-03-01T01:23:24Z</updated>
<author>
<name>Drown Del</name>
</author>
<opensearch:totalResults>2338</opensearch:totalResults>
<opensearch:itemsPerPage>100</opensearch:itemsPerPage>
<entry>
<category term="Romans" label="Romans"/>
<category term="Aventures" label="Aventures"/>
</entry>
</feed>
首先,我想知道如何在XML术语中调用类似opensearch:totalResults
的内容。
我需要你的帮助,用PHP获取以下值。
<opensearch:totalResults>2338</opensearch:totalResults>
我需要获得2338到PHP变量。
谢谢。
谢谢大家的回答。
我可以通过以下方式修复它。
$xml = simplexml_load_string($xmltext);
$val = $xml->xpath('opensearch:totalResults');
echo $val[0];
答案 0 :(得分:3)
使用DOM将所有这些信息解析为PHP。实施例
$doc = new DOMDocument;
$doc->loadXML($xml); //$xml is your xml string
echo $doc->getElementsByTagName("totalResults")->item(0)->nodeValue;
答案 1 :(得分:2)
对于您的第一个问题,opensearch:totalResults
是开始标记的限定名称。它被称为限定名称(您可能会将其称为QName),因为它包含标记的名称空间(opensearch
)。
对于第二个问题,您可以轻松parse your XML加入DOMDocument
,然后查询相关标记的值。 SO上有很多例子,当然还有谷歌;来自PHP.net的基本版本是here。
重要说明:您当前的XML文档不包含opensearch
命名空间的XML namespace declaration,因此不会解析。您需要通过修改添加此类声明:
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fr"
xmlns:opensearch="http://a9.com/-/spec/opensearch/1.1/">
如果您需要更强大的查询功能,还可以使用XPath。最小的例子如下:
$doc = new DOMDocument();
$doc->loadXML($xml);
$xpath = new DOMXPath($doc);
$nodes = $xpath->query('//opensearch:totalResults');
foreach ($nodes as $node) {
echo $node->nodeValue;
}
答案 2 :(得分:1)
opensearch 是一个名称空间,因此您可以尝试访问它,如:
$yourXml->children('openSearch', true)->totalResults
希望有所帮助
答案 3 :(得分:1)
在PHP中查看确切的结果
<?php
$xml ='<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fr">
<title>Liste des ebooks</title>
<updated>2012-03-01T01:23:24Z</updated>
<author>
<name>Drown Del</name>
</author>
<opensearch:totalResults>2338</opensearch:totalResults>
<opensearch:itemsPerPage>100</opensearch:itemsPerPage>
<entry>
<category term="Romans" label="Romans"/>
<category term="Aventures" label="Aventures"/>
</entry>
</feed>';
$dom = new DOMDocument();
$dom->loadXML($xml);
$xmlD = simplexml_import_dom($dom);
echo $xmlD->totalResults;
?>
答案 4 :(得分:0)