使用PHP从XML文档获取特定数据
我有一个XML文档使用PHP从XML文档获取特定数据,php,xml,xpath,xml-parsing,Php,Xml,Xpath,Xml Parsing,我有一个XML文档 <?xml version="1.0" encoding="UTF-8"?> <nlmSearchResult> <term>cancer</term> <file>viv_iUjELT</file> <server>pvlbsrch16</server> <count>341</count> <retstart>0</
<?xml version="1.0" encoding="UTF-8"?>
<nlmSearchResult>
<term>cancer</term>
<file>viv_iUjELT</file>
<server>pvlbsrch16</server>
<count>341</count>
<retstart>0</retstart>
<retmax>10</retmax>
<list num="341" start="0" per="10">
<document rank="9" url="https://www.nlm.nih.gov/medlineplus/cancer.html">
<content name="title"><span class="qt0"><span class="qt1">Cancer</span></span></content>
<content name="altTitle"><span class="qt0"><span class="qt1">Carcinoma</span></span></content>
<content name="altTitle"><span class="qt0"><span class="qt1">Malignancy</span></span></content>
<content name="altTitle"><span class="qt0"><span class="qt1">Neoplasms</span></span></content>
<content name="altTitle"><span class="qt0"><span class="qt1">Oncology</span></span></content>
<content name="altTitle"><span class="qt0"><span class="qt1">Tumor</span></span></content>
</document>
<document rank="0" url="https://www.nlm.nih.gov/medlineplus/throatcancer.html">
<content name="title">Throat <span class="qt0"><span class="qt1">Cancer</span></span></content>
<content name="altTitle">Hypopharyngeal <span class="qt0"><span class="qt1">Cancer</span></span></content>
<content name="altTitle">Laryngeal <span class="qt0"><span class="qt1">Cancer</span></span></content>
<content name="altTitle">Laryngopharyngeal <span class="qt0"><span class="qt1">Cancer</span></span></content>
<content name="altTitle">Nasopharyngeal <span class="qt0"><span class="qt1">Cancer</span></span></content>
<content name="altTitle">Oropharyngeal <span class="qt0"><span class="qt1">Cancer</span></span></content>
<content name="altTitle">Pharyngeal <span class="qt0"><span class="qt1">Cancer</span></span></content>
</document>
<document rank="1" url="https://www.nlm.nih.gov/medlineplus/intestinalcancer.html">
<content name="title">Intestinal <span class="qt0"><span class="qt1">Cancer</span></span></content>
<content name="altTitle">Gastrointestinal Stromal <span class="qt0"><span class="qt1">Tumors</span></span></content>
<content name="altTitle">Small Intestine <span class="qt0"><span class="qt1">Cancer</span></span></content>
<content name="altTitle">Duodenal <span class="qt0"><span class="qt1">cancer</span></span></content>
<content name="altTitle">Ileal <span class="qt0"><span class="qt1">cancer</span></span></content>
<content name="altTitle">Jejunal <span class="qt0"><span class="qt1">cancer</span></span></content>
</document>
</list>
</nlmSearchResult>
巨蟹座
尤杰特万岁
pvlbsrch16
341
0
10
span class=“qt0”span class=“qt1”癌症/span/span
span class=“qt0”span class=“qt1”癌症/span/span
span class=“qt0”span class=“qt1”恶性肿瘤/span/span
span class=“qt0”span class=“qt1”肿瘤/span/span
span class=“qt0”span class=“qt1”肿瘤学/span/span
span class=“qt0”span class=“qt1”肿瘤/span/span
咽喉span class=“qt0”span class=“qt1”癌症/span/span
下咽span class=“qt0”span class=“qt1”癌/span/span
喉癌span class=“qt0”span class=“qt1”癌症/span/span
咽喉span class=“qt0”span class=“qt1”癌症/span/span
鼻咽癌span class=“qt0”span class=“qt1”癌症/span/span
口咽癌span class=“qt0”span class=“qt1”癌症/span/span
咽部span class=“qt0”span class=“qt1”癌症/span/span
肠道span class=“qt0”span class=“qt1”癌症/span/span
胃肠道间质span class=“qt0”span class=“qt1”肿瘤/span/span
小肠span class=“qt0”span class=“qt1”癌症/span/span
十二指肠span class=“qt0”span class=“qt1”癌/span/span
回肠span class=“qt0”span class=“qt1”癌症/span/span
空肠span class=“qt0”span class=“qt1”癌/span/span
我从内容标签中获取名称。在这段代码中,有三个文档标签,而文档标签的数量是不同的。我正在使用此脚本获取name=“title”
$myXMLData = file_get_contents('https://wsearch.nlm.nih.gov/ws/query?db=healthTopics&term=cancer');
$xml = new SimpleXMLElement($myXMLData);
//Getting titles
$titles = $xml->xpath("//nlmSearchResult/list/document/content[@name='title']");
$titleCount = count($titles);
for ($j=0; $j < $titleCount; $j++) {
echo $xml->xpath("//nlmSearchResult/list/document/content[@name='title']")[$j].'<br />';
}
// Getting alternative titles
$alts = $xml->xpath("//nlmSearchResult/list/document/content[@name='altTitle']");
$altCount = count($alts);
for ($i=0; $i < $altCount; $i++) {
echo $xml->xpath("//nlmSearchResult/list/document/content[@name='altTitle']")[$i].'<br />';
}
$myXMLData=file\u get\u contents('https://wsearch.nlm.nih.gov/ws/query?db=healthTopics&term=cancer');
$xml=新的simplexmlement($myXMLData);
//获得头衔
$titles=$xml->xpath(//nlmSearchResult/list/document/content[@name='title']);
$titleCount=计数($titles);
对于($j=0;$j<$titleCount;$j++){
echo$xml->xpath(//nlmSearchResult/list/document/content[@name='title'])[$j]。
;
}
//获得另类头衔
$alts=$xml->xpath(//nlmSearchResult/list/document/content[@name='altTitle']);
$altCount=计数($alts);
对于($i=0;$i<$altCount;$i++){
echo$xml->xpath(//nlmSearchResult/list/document/content[@name='altTitle'])[$i].
;
}
现在所有文档都有不同数量的可选标题,因此我无法获得每个文档的具体长度。我现在想要实现的是获得文档标签方面的标题。例如,
文档[0]->content[@name='altTitle']如何实现这一点?任何形式的帮助都将不胜感激。也许,您将显示所需的输出,因为我不理解您的问题实际上我使用的代码给出了文档中的所有标题。但我希望标题和备选文档标记明智。像在第一个循环中一样,我可以得到第一个文档标记的altTitle,在第二个循环中,它必须向我显示第二个文档标记的altTitle,看看代码。我希望它能帮助您-问题解决了,先生@splash58非常感谢(y):)