我需要查询xml文档,然后显示特定的标记值,例如,姓氏,姓氏,组(部门),job_title。使用XMLReader,DOM,Xpath获取给定节点的标记名称和值
我正在使用XMLReader,因为我可能需要使用大型XML文件。我使用DomXPath来过滤数据,但我不知道如何检索每个元素的nodeName和值。下面的代码仅返回'member'作为节点名称?
任何帮助,将不胜感激。
<?php
$reader = new XMLReader();
$reader->open('include/staff.xml');
while ($reader->read()){
switch($reader->nodeType){
case(XMLREADER::ELEMENT):
if($reader->localName === 'staff'){
$node = $reader->expand();
$dom = new DomDocument();
$dom->formatOutput = true;
$n = $dom->importNode($node, true);
$dom->appendChild($n);
$xp = new DomXpath($dom);
$res = $xp->query("/staff/member[groups='HR']");
}
}
}
echo $res->item(0)->nodeName;
echo $res->item(0)->nodeValue;
?>
是将这些值不基于XMLReader的?我使用DOM和XPath,所以我想我需要使用DOM方法,例如$ res-> item(1) - > nodeValue;得到我的过滤结果。 尝试了$ reader-> name ...无论如何没有返回。 – rossjha 2010-03-04 11:53:02
这应该是XMLReader类的属性。我想你应该在$ reader-> name下面看到一些东西。试试一些最简单的例子。 – 2010-03-04 12:27:14
嗨,感谢您的帮助。我想我已经明白了。我的查询是问题。一旦我掌握了xpath,我就能够为每个标签返回nodeName和nodeValue。 – rossjha 2010-03-04 21:25:06