2015-12-09 4 views
0

У меня есть строка XML. Я хочу использовать тег. Я пробовал simplexml_load_string, но это дает мне ниже предупреждения.Анализ XML в массиве

PHP код

<? 
$data='<?xml version="1.0" ?><ns00:category xmlns:ns00="urn:productlist">DEX</ns00:category><ns00:type xmlns:ns00="urn:productlist">Type A</ns00:type>'; 
$xml=simplexml_load_string($data); 
print_r($xml); 
?> 

Предупреждения

simplexml_load_string(): X&lt;/ns00:category&gt;&lt;ns00:type xmlns:ns00=&quot;urn:productlist&quot;&gt;Type A&lt;/ns00:type&gt;&lt;cat&gt; in C:\wamp\www\wsdl4\xml.php on line 3 
simplexml_load_string(): Entity: line 1: parser error : Premature end of data in tag cat line 1 
simplexml_load_string():^

я тусклый, чтобы использовать этот XML-тег.

ответ

0

Проблема заключается в том, что XML вы используете не в формате «Проппер»,

Если XML генерируется вами, так что вы должны исправить XML writter, использовать функцию, которая генерирует его или просто следовать XML Core Standards

Если XML не порождается вами, так что вам нужно будет сделать некоторые обходные пути, я много, я хотел бы предложить вам:

МАЛЫЙ FILE:

-> R EAD его простого get_file_contents()

-> Разделить его в любом случае вам нужен (Regex для быстрого развития, жестко закодированные выключатели случаев/StrPos/SubStr для лучшей производительности)

большого файла больше, чем 500MB:

-> Попробуйте исправить XML-формат, используя команды linux, такие как SED, AWK или даже XMLLINT перед его разбором;

Вы также можете попробовать это:

SimpleXMLReader, как он читает шаг XML/по/шаг, может быть, вы даже не нужны обходные .. https://github.com/dkrnl/SimpleXMLReader единственная проблема заключается в том, что это медленный, как ад, непригодный для моих приложений.