【问题标题】:XML files badly formatted. I have to correct themXML 文件格式错误。我必须纠正他们
【发布时间】:2015-09-15 02:54:18
【问题描述】:

我必须像这样解析许多文档 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 = "...")(缺少父元素),我纠正了我所能做的,但还有很多其他错误。

有什么功能可以帮助我自动纠正xml错误吗?

【问题讨论】:

  • 取决于错误。我不会让系统猜测某事应该是怎样的,但它可能是可能的。
  • 我能知道你最后是如何解决这个问题的吗?

标签: php xml parsing


【解决方案1】:

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

tidy -xml yourfile.xml > output.xml

我运气不错。 YMMV。

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

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

【讨论】:

  • 不确定这是否与 XML 或 OP 的问题有关,但可以使用新的、HTML 5 感知的 tidy 化身here
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-12-02
  • 1970-01-01
  • 1970-01-01
  • 2021-09-22
  • 2014-11-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多