PHP,XML如何获取属性?

3

我试图从以下xml中返回INTRO标签的SECTION属性值:

myxml.xml示例:

<INTRO SECTION="ONE">
  <TEXT>Hello</TEXT>
</INTRO>
<INTRO SECTION="TWO">
  <TEXT>Goodbye</TEXT>
</INTRO>

我的PHP:

$doc = new DOMDocument();
$doc->load('myxml.xml');
$intros = $doc->getElementsByTagName("INTRO");

foreach( $intros as $intro ) {
echo $intro ->get_attribute('SECTION');
}

我遇到了以下错误:

调用未定义的方法 DOMElement::get_attribute()

请问有人知道我哪里做错了吗?感谢任何回答者。
2个回答

8

谢谢 @KingCrunch... 是 getAttribute 而不是 get_attribute... 我因为下面的链接搞混了... http://php.net/manual/en/function.domelement-get-attribute.php... 谢谢。 - jon
DOMDOM XML (PHP4)是两个独立的扩展。请参阅http://php.net/refs.xml。 - KingCrunch

0
尝试一下这个:
  $xml = simplexml_load_file($file);
   ....
  $attr=$intro->attributes();
  echo $attr['SECTION'];

谢谢回复,但是我遇到了以下错误:调用未定义的方法DOMElement::attributes().... 你觉得我的PHP设置有什么问题吗? - jon
KingCrunch是正确的,正如你在链接中看到的那样,它说在php 5中使用getAttribute,否则我最近使用->attributes(),它运行良好。它会给你一个包含所有属性的数组,然后你只需要获取你想要的$attr['attribute_name']。 - Xenione
@Xenione 你在谈论SimpleXML(http://php.net/simplexmlelement.attributes),这是另一个XML扩展。它与PHP版本略有独立...还可以参考http://php.net/refs.xml - KingCrunch
好的,当然我忘记了在此之前你必须使用 $xml = simplexml_load_file('myxml.xml');我建议将文件变成一个 PHP 对象,这样使用起来非常简单。 - Xenione
@Xenione 现在变得有点混乱了😉DOM扩展也使用对象(如上所示$intro->getAttributes())。甚至XMLReader扩展也使用类。最终,所有这些都能够读取XML文件。有些更简单但功能较弱,另一些更快但更复杂(等等)。重要的是它们都是不同的扩展。 - KingCrunch
显示剩余4条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接