Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用php获取XML中所有现有标记的列表_Php_Xml - Fatal编程技术网

如何使用php获取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>

我有一个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>

-----
------
---
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 );