如何使用php获取XML中所有现有标签的列表

我有一个看起来像这样的xml数据

<channel>
<title>-----</title>
<link>------</link>
<description>---</description>
<lastBuildDate>Tue, 27 Sep 2011 16:37:01 +0000</lastBuildDate>
<language>en</language>
<generator>-------</generator>
<item>
    <title>-----</title>
    <link>-------</link>
    <comments>------</comments>
    <pubDate>Tue, 27 Sep 2011 16:37:01 +0000</pubDate>
    <category>-----</category>
</item>
    <item>
    <title>-----</title>
    <link>-------</link>
    <comments>------</comments>
    <pubDate>Tue, 27 Sep 2011 </pubDate>
    <category>-----</category>
</item>
    <item>
    <title>-----</title>
    <link>-------</link>
    <comments>------</comments>
    <pubDate>Wed, 28 Sep 2011 16:37:01 +0000</pubDate>
    <category>-----</category>
</item>
</channel>

从中,我需要检索所有现有的XML标签用户,如频道,标题,链接,项目等,包括其子标签..我的意思是XML文件中的所有现有标签
我需要使用PHP进行操作的帮助,我使用了DOM和简单的XML对象,但是如果我知道我需要的标签名称,则只能获取特定标签中的值.

但是我实际上需要处理许多xml文件,但我不知道该xml的结构和标签是什么,为此,我需要获取现有的标签名称,以便可以向用户显示它们以选择内容.他需要的标签

我需要使用PHP进行此操作的建议.

提前致谢.

解决方法:

这是我的目的:

$doc = new DOMDocument();

$doc->loadXML( $yourXmlString ); // or:
$doc->load( $yourXmlUrl );

$xpath = new DOMXpath( $doc );
$nodes = $xpath->query( '//*' );

$nodeNames = array();
foreach( $nodes as $node )
{
    $nodeNames[ $node->nodeName ] = $node->nodeName;
}

var_dump( $nodeNames );

我希望我可以使xpath表达式更有效,但是我什么也没想到.这就是为什么我不断覆盖$nodeNames的键的原因.

仔细想想:也许我误解了您的问题,您根本不需要唯一的元素名称,但实际上想要所有元素.如果是这样:您想要它们吗?作为琴弦?包括他们的完整路径?

相关文章

php输出xml格式字符串
J2ME Mobile 3D入门教程系列文章之一
XML轻松学习手册
XML入门的常见问题(一)
XML入门的常见问题(三)
XML轻松学习手册(2)XML概念