获取xml单层数据元素

Lakesy 2010-11-24 09:05:39
各位好,我有一个 test.xml文件,内容如下

<?xml version="1.0" encoding="UTF-8"?>
<main version='2'>
<item IsFolder="1" name="folder1" addtime="2010-02-05 10:12:48"> //目标1
<item IsFolder="0" name="e1" addtime="2010-02-05 10:11:58">content1</item>
<item IsFolder="0" name="e2" addtime="2010-08-18 08:59:41">content2</item>
<item IsFolder="0" name="e3" addtime="2010-09-27 00:24:25">content3</item>
</item>
<item IsFolder="1" name="folder2" addtime="2010-03-21 17:44:19"> //目标2
<item IsFolder="0" name="e1" addtime="2010-03-21 17:44:19">content1</item>
<item IsFolder="0" name="e2" addtime="2010-03-21 17:44:19">content2</item>
<item IsFolder="0" name="e3" addtime="2010-03-21 17:44:19">content3</item>
<item IsFolder="0" name="e4" addtime="2010-03-21 17:44:19">content4</item>
<item IsFolder="0" name="e5" addtime="2010-03-21 17:44:19">content5</item>
<item IsFolder="0" name="e6" addtime="2010-03-21 17:44:19">content6</item>
<item IsFolder="0" name="e7" addtime="2010-03-31 08:42:57">content7</item>
</item>
<item IsFolder="0" name="f1" addtime="2010-03-21 17:44:19">contentf1</item> //目标3
<item IsFolder="0" name="f2" addtime="2010-03-31 08:42:57">contentf2</item> //目标4
</main>


通过以下语句可以获得相关信息:

$doc->load('test.xml');
$main = $doc->getElementsByTagName("main")->item(0);
$itemiter = $main->getElementsByTagName("item");

但是,$itemiter嵌套获取了所有的item元素,有没有什么方法可以至获取一层数据的,及不要嵌套。即只需要“目标1,2,3,4”这四个元素的就够了。
望赐教。谢谢。
...全文
81 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
CunningBoy 2010-11-25
  • 打赏
  • 举报
回复
这个比较麻烦,除非给你的xml节点设置ID,或者改变子节点的Tag Name和父节点区分开
Lakesy 2010-11-25
  • 打赏
  • 举报
回复
暂时发现使用 $xml = simplexml_load_file() and $xml->children() sounds good ,trying.
Lakesy 2010-11-25
  • 打赏
  • 举报
回复
或许用正则表达式解析试试。
Lakesy 2010-11-25
  • 打赏
  • 举报
回复
谢谢诸位!
foolbirdflyfirst 2010-11-25
  • 打赏
  • 举报
回复
$dom = new DOMDocument();
$xml = <<<xml
<main version='2'>
<item IsFolder="1" name="folder1" addtime="2010-02-05 10:12:48">
<item IsFolder="0" name="e1" addtime="2010-02-05 10:11:58">content1</item>
<item IsFolder="0" name="e2" addtime="2010-08-18 08:59:41">content2</item>
<item IsFolder="0" name="e3" addtime="2010-09-27 00:24:25">content3</item>
</item>
<item IsFolder="1" name="folder2" addtime="2010-03-21 17:44:19">
<item IsFolder="0" name="e1" addtime="2010-03-21 17:44:19">content1</item>
<item IsFolder="0" name="e2" addtime="2010-03-21 17:44:19">content2</item>
<item IsFolder="0" name="e3" addtime="2010-03-21 17:44:19">content3</item>
<item IsFolder="0" name="e4" addtime="2010-03-21 17:44:19">content4</item>
<item IsFolder="0" name="e5" addtime="2010-03-21 17:44:19">content5</item>
<item IsFolder="0" name="e6" addtime="2010-03-21 17:44:19">content6</item>
<item IsFolder="0" name="e7" addtime="2010-03-31 08:42:57">content7</item>
</item>
<item IsFolder="0" name="f1" addtime="2010-03-21 17:44:19">contentf1</item>
<item IsFolder="0" name="f2" addtime="2010-03-31 08:42:57">contentf2</item>
</main>
xml;
$dom->loadXML($xml);

$xpath = new DOMXPath($dom);

$items = $xpath->query("//main/item");

foreach($items as $item)
{
echo $item->getAttribute("name")."<br/>";
}
happy664618843 2010-11-25
  • 打赏
  • 举报
回复

$doc->load('test.xml');
$main = $doc->getElementsByTagName("main");
foreach($main as $ma){
$test=$ma->getElementsByTagName('test')->item(0).nodeValue;
}


21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧