这个DOMDocument XML的SimpleXML版本是什么?

时间:2012-02-08 20:55:48

标签: php xml simplexml domdocument

据我所知,SimpleXML比DOMDocument更有效。关于如何将下面的内容改为SimpleXML版本的任何建议?

    <?php
  $doc = new DOMDocument();
  $doc->load( 'feedpage.xml' );


  $Main = $doc->getElementsByTagName( "varOne" );
  foreach( $Main as $varOne )
  {
  $VarTwo = $varOne->getElementsByTagName( "VarTwo" );
  $VarTwo = $VarTwo->item(0)->nodeValue;

  $VarThree = $varOne->getElementsByTagName( "VarThree" );
  $VarThree = $VarThree->item(0)->nodeValue;

  $VarFour = $varOne->getElementsByTagName( "VarFour" );
  $VarFour = $VarFour->item(0)->nodeValue;

  $VarFive = $varOne->getElementsByTagName( "VarFive" );
  $VarFive = $VarFive->item(0)->nodeValue;

  echo "$VarTwo - $VarThree - $VarTFour - ETC\n";
  echo "<img src=\"$VarFive\" />";
  echo "<a href=\"$VarFour\" target=\"_blank\">Link</a>";
  }
  ?>

1 个答案:

答案 0 :(得分:1)

从这样的事情开始:

$doc = simplexml_load_file("feedpage.xml");

然后(因为我不知道您的XML文件是什么样的),请尝试:

echo "<pre>".print_r($doc,true)."</pre>";

确切了解生成的对象的布局方式。从那里,你应该能够挑选出你想要的东西。

修改

如果你的输出是:

SimpleXMLElement Object ( 
    [varOne] => SimpleXMLElement Object ( 
        [varOne] => Title 
        [varTwo] => A description 
        [VarThree] => A Link 
        [VarFour] => An Image
    )
)

您可以这样做来访问每个属性:

foreach($doc as $row) {
    $title = $row->varOne;
    $description = $row->varTwo;
    // etc.
}

因此,使用foreach循环,您可以浏览每个主要项目并访问每个项目的属性。

如果你想把代码放在注释中,你可以使用反引号(`)来包围你的文本,但它不适用于代码块(比如你想发布的代码块)。最适合变量或其他短位。

最终编辑:

我们来看这个示例对象:

SimpleXMLElement Object ( 
    [varOne] => SimpleXMLElement Object ( 
        [varOne] => "Title"
        [varTwo] => "Description"
        [varThree] => "Link"
        [varFour] => "Image"
        [varFive] => SimpleXMLElement Object (
            [varA] => "something"
            [varB] => SimpleXMLElement Object (
                [varX] => "a string"
            )
            [varC] => "another thing"
        )
    )
)

假设整个事物包含在变量$obj中。现在让我们说我们想要varX中的内容。我们这样访问它:

echo $obj->varOne->varFive->varB->varX;

除此之外,我不知道还能告诉你什么。您需要仔细检查您拥有的对象并确定它们的结构。推断您在这里学到的知识并将其应用到您的情况中。