格式错误的XML文件。我必须纠正它们

时间:2015-06-28 16:42:15

标签: php xml parsing

我必须像这样解析许多文档xml:

<doc id=lk-20130223040102_592>
<meta-info>
<tag name="date">2013-02-22</tag>
<tag name="source-encoding">ISO-8859-1</tag>
</meta-info>
<text><SE><E type="E:PERSON">Tom Taylor</E>, who runs <E type="E:ORGANIZATION:CORPORATION">MF&B Marine Warehouse</E> in <E type="E:LOCATION:OTHER">Hampton Roads</E>, is already watching contracts with the <E type="E:ORGANIZATION:GOVERNMENT">Navy</E> <E type="E:PER_DESC">dry</E> up at his small ship-repair <E type="E:ORG_DESC:CORPORATION">business</E>.</SE>
</text></doc>
<doc ...</doc>

我制作了一个简单的脚本来解析其中一个:

<?php
$xml=simplexml_load_file('wp7-lk-20130223040102.xml');
foreach ($xml->doc as $doc){
    echo $doc['id'];
    echo "<br>";
}
?>

但它会返回一组警告:

Warning: simplexml_load_file(): ^ in C:\wamp\www\parse_xml.php on line 6

我注意到一些错误(id = ...而不是id =&#34; ......&#34;)(父元素丢失)我纠正了我能做的事情,但也有很多其他错误。< / p>

是否有任何功能可以帮助我自动纠正错误xml?

1 个答案:

答案 0 :(得分:1)

这是一个非php解决方案,但可能是该过程的一部分(甚至通过php自动化)。多年来,我一直依赖一款名为“整洁”的应用来快速修复HTML,XML。可能不起作用或可能使事情变得更糟;这只是一个建议。

tidy -xml yourfile.xml&gt;的Output.xml

我好运。 YMMV。

您的问题类似于Fix malformed XML in PHP before processing using DOMDocument functions,这表明Tidy php-extension

旧的整洁链接:http://www.w3.org/People/Raggett/tidy/