我试图访问的每个表行:SimpleXML->的XPath问题
http://www.alliedelec.com/search/searchresults.aspx?N=0&Ntt=PIC16F648&Ntk=Primary&i=0&sw=n
与SimpleXML->的XPath。我已经确定了表的XPath的是:
'//*[@id="tblParts"]'
现在我把我的卷曲串$串并执行以下操作:
$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
此外,您需要使用适合您正在处理的数据的工具。如果您打算使用XML方法,那么编写好的代码要求可以*保证输入的格式良好,而不仅仅是希望和实验的猜测。您只能相信XML库为您生成XML,因此如果您在处理的早期处于“肮脏”阶段,则必须使用HTML方法进行转换并使代码安全。 – 2011-05-08 14:50:05
我不知道我可以用什么其他工具从这个HTML文件中提取数据,我不知道如何清除脏代码,除非让它通过整齐运行。 – 2011-05-08 14:53:27