php - SimpleXML->xpath 问题

标签 php xml xpath curl simplexml

我正在尝试访问每个表行:

http://www.alliedelec.com/search/searchresults.aspx?N=0&Ntt=PIC16F648&Ntk=Primary&i=0&sw=n

使用 SimpleXML->xpath。我已将表的 xpath 确定为:

'//*[@id="tblParts"]'

现在我获取 cURL 字符串 $string 并执行以下操作:

$tidy->parseString($string);
$output = (string) $tidy;
$xml = new SimpleXMLElement($output);
$result = $xml->xpath('//*[@id="tblParts"]');
while(list( , $node) = each($result)) 
{
echo 'NODE:' . $node . "\n";
}

我得到的结果是诸如此类的数百个错误:

Warning: SimpleXMLElement::__construct() [simplexmlelement.--construct]: Entity: line 60: parser error : Opening and ending tag mismatch: meta line 22 and head in C:\xampp\htdocs\elexess\api\driver\driver_alliedelectronics.php on line 119

Warning: SimpleXMLElement::__construct() [simplexmlelement.--construct]: </head> in C:\xampp\htdocs\elexess\api\driver\driver_alliedelectronics.php on line 119

Warning: SimpleXMLElement::__construct() [simplexmlelement.--construct]: ^ in C:\xampp\htdocs\elexess\api\driver\driver_alliedelectronics.php on line 119

Warning: SimpleXMLElement::__construct() [simplexmlelement.--construct]: Entity: line 108: parser error : Opening and ending tag mismatch: img line 106 and td in C:\xampp\htdocs\elexess\api\driver\driver_alliedelectronics.php on line 119

最后还有这个:

Fatal error: Uncaught exception 'Exception' with message 'String could not be parsed as XML' in C:\xampp\htdocs\app\com\get\get_alliedelectronics.php:119 Stack trace: #0 C:\xampp\htdocs\app\com\get\get_alliedelectronics.php(119): SimpleXMLElement->__construct('<!DOCTYPE html ...') #1 C:\xampp\htdocs\app\com\get\get_alliedelectronics.php(95): get_Alliedelectronics->extractData('<!DOCTYPE html ...') #2 C:\xampp\htdocs\app\com\get\get_alliedelectronics.php(138): get_Alliedelectronics->query('PIC16F648') #3 {main} thrown in C:\xampp\htdocs\app\com\get\get_alliedelectronics.php on line 119

最佳答案

看起来您正在获取并尝试解析的页面的 HTML 格式不正确(标签不匹配等)

您可以尝试使用 simplexml_import_dom 修复错误正如我在this SO post中解释的那样.

关于php - SimpleXML->xpath 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5927879/

相关文章:

python - 仅以 1 对 3 <tr>

php - PHP 中的并行数组赋值

php - codeigniter 中的浏览器缓存问题

html - 使用 xpath 查找具有特定内容的跨度

Python xml.etree.ElementTree - 如何引用我正在解析的当前节点

XML 和 CSS : Text doesn't rotate

php - 使用 PHP 和 Linux 从 PDF 文件中提取绘制的路径

javascript - 根据 Javascript 变量值从 PHP 获取数据到 Javascript

半连接的 xpath 语法

python - scrapy list return:如何处理/提取列表的每个元素?