php dom 查询,php – 使用DomDocument使用getElementsByTagName()查找元素

DOMDocument的东西可能很难处理,因为诸如print_r()和var_dump()之类的函数不一定与在普通数组和对象上执行相同的操作(参见手册中的

this comment).

您必须使用文档节点的各种功能和属性来提取数据.例如,如果您有以下XML:

This is a line item.

您可以输出以下各项:

$itemListObjects = $orderXML->getElementsByTagName('LineItemInfo');

foreach($itemListObjects as $node) {

echo $node->nodeValue; //echos "This is a line item."

echo $node->attributes->getNamedItem('attr1')->nodeValue; //echos "hi"

}

如果您有嵌套结构,则可以使用childNodes属性基本遵循相同的过程.例如,如果你有这个:

Line 1

Line 2

你可能会这样做:

$itemListObjects = $orderXML->getElementsByTagName('LineItemInfo');

foreach($itemListObjects as $node) {

if ($node->hasChildNodes()) {

foreach($node->childNodes as $c) {

echo $c->nodeValue .",";

}

}

}

//you'll get output of "Line 1,Line 2,"

希望有所帮助.

编辑特定代码和XML

我在测试脚本中运行了以下代码,它似乎对我有用.你能更具体地说明什么不起作用吗?我完全使用了您的代码,除了创建文档的前两行.你在loadHTML()上使用loadXML()吗?有什么错误吗?

$orderXML = new DOMDocument();

$orderXML->loadXML("

149593

149593

");

$itemListObject = $orderXML->getElementsByTagName('LineItemInfo');

foreach ($itemListObject as $element) {

$product = $element->getElementsByTagName('ProductId');

$productId = $product->item(0)->nodeValue;

echo $productId.'-';

}

//outputs "149593-149595-"

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值