5

这是我的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”

多谢你们!

4

3 回答 3

13

尝试这个:

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

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

于 2011-05-11T21:07:01.180 回答
2
$nodelist = $results->getElementsByTagName('*');
for( $i=0; $i < $nodelist->length; $i++)
    echo $nodelist->item($i)->nodeName;
于 2011-05-11T21:11:04.573 回答
0

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

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

于 2011-05-11T21:23:05.107 回答