2012-12-14 59 views
1

我使用XPath有这个XMLXML得到节点名通过XPATH

<Parent> 
<Children> 
    <child1>1</child1> 
    <secondchild>2</secondchild> 
    <child3>3</child3> 
    <fourth>4</fourth> 
</Children> 
</Parent> 

,我想每个Children的节点直到结束:

  • child1
  • secondhild
  • child3
  • fourth

Parent/Children/*[@name] ..没有,只有主子节点名称

回答

2

也许这针对任何属性:

<?php 
$string = '<Parent> 
<Children> 
    <child1>1</child1> 
    <secondchild>2</secondchild> 
    <child3>3</child3> 
    <fourth>4</fourth> 
</Children> 
</Parent>'; 

$xml = new SimpleXMLElement($string); 

$children = $xml->xpath('/Parent/Children/*'); 

foreach ($children as $child){ 
    echo $child->getName() . "\n"; 
} 

<?php 
$string = '<Parent> 
<Children> 
    <child1>1</child1> 
    <secondchild>2</secondchild> 
    <child3>3</child3> 
    <fourth>4</fourth> 
</Children> 
</Parent>'; 

$xml = new SimpleXMLElement($string); 

$children = $xml->xpath('/Parent/Children/*'); 
$result = array(); 

foreach ($children as $child){ 
    $result[] = $child->getName(); 
} 

print_r($result); 
0

试试这个XPATH:

Parent/Children/*/name() 

这将调用结果节点上的name()函数。

+0

不工作,但是,Zemistr的答案运作良好,谢谢 – Osa