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

这篇博客介绍了如何使用PHP的DOMDocument类来处理XML数据。通过示例代码展示了如何获取XML文档的节点值和属性,并提供了处理嵌套结构的方法。在处理过程中,强调了常规打印函数如print_r和var_dump可能不适用于DOMDocument对象,需要利用其内置方法来提取信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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-"

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值