【发布时间】:2010-10-20 10:30:00
【问题描述】:
我有以下 XML 结构:
<?xml version="1.0" encoding="ISO-8859-1"?>
<articles>
<article id="1">
<title>Article title 001</title>
<short>Short text</short>
<long>Long text</long>
</article>
<article id="2">
<title>Article title 002</title>
<short>Short text</short>
<long>Long text</long>
</article>
</articles>
我只想选择<title> 和<short>。
目前使用它来显示所有内容:
$queryResult = $xpathvar->query('//articles/article'); // works fine grabs all articles
foreach($queryResult as $result){
echo $result->textContent;
}
预期的输出是:
文章标题 001
短文本
任何帮助将不胜感激。
有效的解决方案!
if ($artId == "") {
$queryResult = $xpathvar->query('//articles/article/*'); // grab all children
foreach($queryResult as $result){
if($result->nodeName === 'title' || $result->nodeName === 'short') {
echo $result->textContent;
}
}
}else{
$queryResult = $xpathvar->query(sprintf('//articles/article[@id="%s"]/*', $artId)); // Show requested article
foreach($queryResult as $result){
if($result->nodeName === 'title' || $result->nodeName === 'long') {
echo $result->textContent;
}
}
}
【问题讨论】:
-
您真正希望看到什么输出?
-
好问题,+1。请参阅我的答案以获得更有效的解决方案 - 也是一个更“XPath-y”的解决方案。 :)