微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用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的键的原因.

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。