使用php在xml中获取标记名

时间:2011-05-11 20:59:46

标签: php xml dom getelementsbytagname

这是我的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');

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

示例解决方案

title, content, date

我不知道news_item里面的标签名称,只知道容器标签名称'news_item'

谢谢你们!

3 个答案:

答案 0 :(得分:11)

试试这个:

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

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

答案 1 :(得分:1)

$nodelist = $results->getElementsByTagName('*');
for( $i=0; $i < $nodelist->length; $i++)
    echo $nodelist->item($i)->nodeName;

答案 2 :(得分:0)

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

尽管如此,使用simplexml_import_dom()从DOMElement中生成SimpleXMLElement是没有成本的。两者都只是底层libxml2数据结构的对象接口。您甚至可以对DOMElement进行更改,并将其反映在SimpleXMLElement中,反之亦然。所以它不一定是选择。