如何使用php获取XML中所有现有标记的列表
我有一个xml数据,看起来像这样如何使用php获取XML中所有现有标记的列表,php,xml,Php,Xml,我有一个xml数据,看起来像这样 <channel> <title>-----</title> <link>------</link> <description>---</description> <lastBuildDate>Tue, 27 Sep 2011 16:37:01 +0000</lastBuildDate> <language>en</language>
<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>
-----
------
---
2011年9月27日星期二16:37:01+0000
EN
-------
-----
-------
------
2011年9月27日星期二16:37:01+0000
-----
-----
-------
------
2011年9月27日,星期二
-----
-----
-------
------
2011年9月28日星期三16:37:01+0000
-----
从这里,我需要检索所有现有的XML标记给用户,如频道、标题、链接、项目等,包括它们的子标记。。我指的是XML文件中的所有现有标记
我需要关于如何使用php实现这一点的帮助,我使用了DOM和简单XML对象,但只有知道所需的标记名,我才能获得特定标记中的值
但我实际上需要处理许多xml文件,我不知道特定xml的结构和标记是什么,因此我需要获取现有的标记名称,以便我可以将它们显示给用户,以选择他需要的标记
我需要使用php进行此操作的建议
提前感谢。这里有一个简单的示例,介绍如何使用PHP的
SimpleXML
库,可以在
电影[0]->分级为$rating){
开关((字符串)$rating['type']){//Get属性作为元素索引
案例“拇指”:
echo$评级,“竖起大拇指”;
打破
“明星”案例:
echo$评级为“明星”;
打破
}
}
?>
以下是我的尝试:
$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
的键
想一想:也许我误解了你的问题,你根本不想要唯一的元素名,而是想要字面上的所有元素。如果是:你想要怎样的?作为字符串?包括它们的完整路径吗?我需要所有标记进入一个数组。。!!我不需要唯一的元素,我只需要将所有元素存储在数组中。。!
$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 );