【问题标题】:get tagname in xml using php使用 php 在 xml 中获取标记名
【发布时间】:2011-05-11 20:59:46
【问题描述】:

这是我的 xml:

<news_item>    
    <title>TITLE</title>
    <content>COTENT.</content>
    <date>DATE</date>
<news_item>

我想获取 news_item 中的标签名称。

这是我目前所拥有的:

$dom = new DOMDocument();
$dom->load($file_name);
$results = $dom->getElementsByTagName('news_item');

不使用 simpleXML 等其他 php 库,我可以获得子标签的所有标签名称(不是值)的名称吗?

示例解决方案

title, content, date

我不知道 news_item 内部的标签名称,只知道容器标签名称 'news_item'

谢谢各位!

【问题讨论】:

标签: php xml dom getelementsbytagname


【解决方案1】:

试试这个:

foreach($results as $node)
{
    if($node->childNodes->length)
    {
        foreach($node->childNodes as $child)
        {
            echo $child->nodeName,', ';
        }
    }
}

应该可以。目前使用类似的东西,但对于 html 而不是 xml。

【讨论】:

  • 这成功了!我想nodeName 是我要找的,谢谢!
【解决方案2】:
$nodelist = $results->getElementsByTagName('*');
for( $i=0; $i < $nodelist->length; $i++)
    echo $nodelist->item($i)->nodeName;

【讨论】:

  • 我很确定这个会起作用,我刚刚实现了你之前的第一个答案,谢谢!
【解决方案3】:

[已编辑以前的错误答案]

尽管如此,使用 simplexml_import_dom() 从 DOMElement 中生成 SimpleXMLElement 是免费的。两者都只是底层 libxml2 数据结构的对象接口。您甚至可以对 DOMElement 进行更改并在 SimpleXMLElement 中看到它的反映,反之亦然。所以它不必是一个非此即彼的选择。

【讨论】:

  • 嗯,是的。我很好地解决了这个问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-01-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-07-06
相关资源
最近更新 更多