1

私はこのXMLを持っています

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

xpathを使用して、それぞれChildrenのノードを次のように取得したいと思います。

  • child1
  • セカンドヒルド
  • child3
  • 第4

..のようなものParent/Children/*[@name] 属性を狙わずに、メインの子ノード名のみ

4

2 に答える 2

3

多分これ:

<?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);
于 2012-12-14T00:46:17.933 に答える
0

このXPATHを試してください:

Parent/Children/*/name()

これにより、結果のノードでname()関数が呼び出されます。

于 2012-12-14T00:49:51.623 に答える