2013-01-22 4 views
1

URL에서 XML을 가져 와서 mysql 데이터베이스를 업데이트하고 데이터를 csv 파일로 구문 분석하는 스크립트를 만들었습니다.SimpleXML XML 구문 분석

XML 형식의 HTML 문자열이 있는데 거기에 있으면 안됩니다. 구문 분석하는 동안 제거하는 방법? 나는 파이어 폭스를 사용하여 디스크에 URL에서 XML을 저장하면 내가 아무 문제가

Warning: simplexml_load_file() [function.simplexml-load-file]: http://domain.com/api/get_catalog.php?id=351&user=878&key=b8:1: parser error : Space required after the Public Identifier in /dokumenti/skripte/xmlupdate/lost/test/lost_xml.php on line 59 

Warning: simplexml_load_file() [function.simplexml-load-file]: <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> in /dokumenti/skripte/xmlupdate/lost/test/lost_xml.php on line 59 

Warning: simplexml_load_file() [function.simplexml-load-file]:^in /dokumenti/skripte/xmlupdate/lost/test/lost_xml.php on line 59 

Warning: simplexml_load_file() [function.simplexml-load-file]: http://domain.com/api/get_catalog.php?id=351&user=878&key=b8:1: parser error : SystemLiteral " or ' expected in /dokumenti/skripte/xmlupdate/lost/test/lost_xml.php on line 59 

Warning: simplexml_load_file() [function.simplexml-load-file]: <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> in /dokumenti/skripte/xmlupdate/lost/test/lost_xml.php on line 59 

Warning: simplexml_load_file() [function.simplexml-load-file]:^in /dokumenti/skripte/xmlupdate/lost/test/lost_xml.php on line 59 

Warning: simplexml_load_file() [function.simplexml-load-file]: http://domain.com/api/get_catalog.php?id=351&user=878&key=b8:1: parser error : SYSTEM or PUBLIC, the URI is missing in /dokumenti/skripte/xmlupdate/lost/test/lost_xml.php on line 59 

Warning: simplexml_load_file() [function.simplexml-load-file]: <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> in /dokumenti/skripte/xmlupdate/lost/test/lost_xml.php on line 59 

Warning: simplexml_load_file() [function.simplexml-load-file]:^in /dokumenti/skripte/xmlupdate/lost/test/lost_xml.php on line 59 
xml $ not loaded. 

: 스크립트를 실행했을 때 얻을

$xml = simplexml_load_file(utf8_encode($xml_url), 'SimpleXMLElement', LIBXML_NOCDATA); 

오류 :

는이 같은 XML 파일을로드 내가 url에서 그것을 얻으려고 할 때 그것을 파싱한다.

XML 잘 보이는 : XML의 부 :

<?xml version="1.0" encoding="UTF-8"?> 
<RecroKatalog> 
<viewCustomerDiscount> 
    <BrojArtikla>10214</BrojArtikla> 
    <Naziv>Eksterno kucište 2.5&quot; S-ATA+IDE HDD, Aluminium, USB 2.0</Naziv> 
    <NetoPrice>81.8224</NetoPrice> 
    <Status>Dostupno</Status> 
    <Opis></Opis> 
    <dugi_opis>Isporucuje se u SIVOJ boji</dugi_opis> 
    <Image>http://shop.lost.hr/data/images/big/10.jpg</Image> 
    <WEB_Grupa>Ladice i eksterna kucišta - OSTALO</WEB_Grupa> 
    <Akcija>0</Akcija> 
    <Proizvodjac></Proizvodjac> 
    <Klasifikacija>PH-25SD-B/VK220</Klasifikacija> 
</viewCustomerDiscount> 
+0

유효한 xml이기 때문에. –

+0

원격으로 호출 할 때 XML에 추가 선이 추가되어 유효하지 않은 것처럼 보이는 – Wilq

+1

먼저 XMLReader :: isValid (void)를 사용하여 XML 문서가 유효한지 확인할 수 있습니다. – user1929959

답변

5

오류 메시지의 일부 거대한 단서가있다. 보고있는 것에 대해 불평하고 있습니다.

찾고있는 XML이 아닌 해당 웹 사이트에서 제공하는 HTML 문서의 시작입니다.

이것은 대개 원격 서비스에 대해 인증해야하므로 (로그인 한 상태에서 브라우저에서 작업하는 경우) 발생하지만 SimpleXML에서이를 수행하지는 않습니다.

+0

나는 그의 진술과 관련이 있다고 생각했다 : * "XML이 아닌 HTML을 읽으면서 오늘은 작동이 멈췄다. 혼란 스럽다." 하지만 그건 우리에게 도움이되지 않습니다. –

+0

그러나 브라우저로 해당 URL로 이동하면 유효한 XML이 표시됩니까? 3 시간 전이 기능이 작동합니까? 그리고 지난 20 일 동안 어떻게 작동 했습니까? – mehnihma

+0

@mehnihma URL이 ...... ...... –