PHP 板


LINE

看板 PHP  RSS
我想请问一个php读取DOM的状况 今天我有一个自己建立的 XML 档如下 <list> <item serial="1"> <pt_path>oh.jpg</pt_path> <pt_path>my.jpg</pt_path> <pt_path>god.jpg</pt_path> </item> <item serial="2"> <pt_path>ooo.jpg</pt_path> <pt_path>xxx.jpg</pt_path> </item> </list> 而我今天要取出 pt_path 的内容。 而且是以 serial 来判断要取出的是哪个 node ,我的流程如下 $loadImgXml = new DOMDocument(); $loadImgXml->load ("cart/show_img.xml"); $imgNode = $loadImgXml->getElementsByTagName("item"); //到此可以抓到 2 个 item Node 接着是 for($is = 0 ; $is < $imgNode->length ; $is++) { $subitem = $imgNode->item($is); // 个别抓 item if( $subitem->attributes->getNamedItem("serial")->nodeValue == $itemID ) { // 上面是抓 attribute "serial" 的值是不是我要的 node $cNodes = $subitem->childNodes; //假如是我要的 node, 取得 pt_path 集合 foreach($cNodes as $node) { echo $node->nodeValue."1<br />"; //印 1 是怕印出空的看不到 } } } 问题是,我确认第二段抓 serial 的部份是OK的,成功抓到我要的东西 但是在下面跑 echo 的时候有一点点小问题 以目前的 xml 他会显示成下面的状况 1 oh.jpg1 1 my.jpg1 1 god.jpg1 1 就是原本只有三个childNode变成有6个childNode,但是若我以下面的 xml 跑 <list> <item serial="1"><pt_path>oh.jpg</pt_path><pt_path>my.jpg</pt_path>...</item> <item serial="2"><pt_path>ooo.jpg</pt_path><pt_path>xxx.jpg</pt_path></item> </list> 那输出就一切正常 oh.jpg1 my.jpg1 god.jpg1 以前我制作时没有遇过这种问题 ... 不知道为什麽这次就出现了 因为我的 xml 可能会变得很大(每新增图片就需要手动 append),未来也不一定是我修改 所以为了让 xml 比较好理解,不希望缩成这样子 .. 试问有解决方法吗~"~ 谢谢 --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 60.250.247.227
1F:推 LPH66:那些 Child 是你的 XML 里的换行 它会是文字节点 08/31 20:20
2F:→ LPH66:所以你只要判断这个节点到底是文字节点还是<pt_path>即可 08/31 20:21
3F:→ kerash:我了解换行,但对读 xml 而言,他算是一个 node? 08/31 20:53
4F:→ kerash:所有范例都没这种问题,但是我的却出现了,以前也没遇过 08/31 20:53
5F:→ kerash:所以想确认是否有特别的原因,毕竟多一层判断很不必要@@ 08/31 20:54
6F:推 LPH66:对於不知道这个节点里有没有普通文字的一般parser来说 09/01 00:57
7F:→ LPH66:它必须处理任何节点中有子tag和文字混合出现的情况 09/01 00:57
8F:→ LPH66:像HTML也有 <p>Some <b>bold</b> text</p> 这种情形 09/01 00:58
9F:→ LPH66:所以必须要以一个 node 来处理这种旁边出现的文字 09/01 00:58
10F:→ LPH66:像上例就会变成 <p> 下面有三个 node 分别是 文字 <b> 文字 09/01 00:59
11F:→ LPH66:而 bold 则会变成 <b> 下面的文字节点 09/01 00:59
12F:→ LPH66:所以这是不可避免的 也只好加一个判断进去 09/01 01:01
13F:→ kerash:好吧,那只好尽量不改变结构了,谢谢 LPH66 09/01 11:17







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:WOW站内搜寻

TOP