2011-05-08 6 views
2

내가의 각 테이블 행에 액세스하려고 :SimpleXML-> XPath는 문제

SimpleXML->의 XPath와 http://www.alliedelec.com/search/searchresults.aspx?N=0&Ntt=PIC16F648&Ntk=Primary&i=0&sw=n

. 나는 테이블의 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 

답변

2

당신이 가져 오는 구문 분석하려는 페이지의 HTML처럼 잘

당신은 시도하고 내가 this SO post에 설명으로 simplexml_import_dom를 사용하여 오류를 수정할 수 있습니다 (등 태그 불일치)를 형성하지 않는 본다.

+0

또한 처리중인 데이터에 적합한 도구를 사용해야합니다. XML 방법을 사용할 계획이라면 좋은 코드를 작성하면 실험에 의한 희망과 추측이 아닌 올바른 형식의 입력을 보장 할 수 있어야합니다. XML을 생성 할 수있는 XML 라이브러리 만 신뢰할 수 있기 때문에 HTML 메쏘드를 사용하여 변환을 수행하고 처리 초기에 '더티'단계에 있다면 코드를 안전하게 만들어야합니다. –

+0

나는이 html 파일에서 데이터를 추출하는 데 사용할 수있는 다른 도구가 무엇이 아닌지 확실하지 않아서 깔끔한 코드를 실행하는 것을 제외하고는 더티 코드를 정리하는 방법을 확신하지 못합니다. –

1

SimpleXML을 사용하지 않는 것이 좋습니다. (@Nev Stokes 및 @Nicholas Wilson이 맞습니다 : XML이 아닌 HTML이며 XML로 유효성을 보장 할 수 없습니다.) DOM과 같은 것을 사용하십시오 (http://www.php.net/manual/en/book.dom.php 참조). 다음과 같이 할 수 있습니다.

도움이되는지 확인하십시오.