据我所知,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>";
}
?>
答案 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;
除此之外,我不知道还能告诉你什么。您需要仔细检查您拥有的对象并确定它们的结构。推断您在这里学到的知识并将其应用到您的情况中。