如何使用php修复XML文件中的错误

时间:2010-12-23 04:42:59

标签: php xml

<?xml version="1.0" encoding="ISO-8859-1"?>

<Note>
<from>
Ahmad
</from>
<to>
Yasir
</to>
<body>
hello yasir.

</Note>

上面是我的xml文件,它错过了<body>的结束标记。 我想要一个PHP程序,它将检测此错误,并修复错误并放置结束标记。

1 个答案:

答案 0 :(得分:0)

如果您正在寻找快速解决方案以修复无法匹配的标记,以下内容可以解决问题:

libxml_use_internal_errors(true);
$file   = 'your_xml.xml';
$xml    = @simplexml_load_file($file);
$errors = libxml_get_errors();
foreach ($errors as $error)
{
  if (strpos($error->message, 'Opening and ending tag mismatch')!==false)
  {
    $tag   = trim(preg_replace('/Opening and ending tag mismatch: (.*) line.*/', '$1', $error->message));
    $lines = file($file, FILE_IGNORE_NEW_LINES);
    $line  = $error->line-1;
    $lines[$line] = '</'.$tag.'>'.$lines[$line];
    file_put_contents($file, implode("\n", $lines));
  }
}

您可以考虑使用更合适的方法,例如使用PHP Tidy extension

相关问题:Fix malformed XML in PHP before processing using DOMDocument functions