验证并可能更正我拥有的XML文件

时间:2012-06-05 22:44:10

标签: php xml domdocument xml-validation

我有一个我需要使用的XML文件(随机资源)。我使用PHP DOM Document来处理这个文档,使用DOMXPath来查询对象。但是,XPath查询不返回任何类型的数据(resultset-> length = 0)。查询是正确的,我并不担心它的语法。我还尝试了DOMDOcument-> getElementsByTagName(“tag”),这也返回了null结果。

在上面的上下文中,当我调用

时,如何检查我的DOMDocument是否能够加载
DOMDocument->Load('file.xml')


[also tried 

$xmlFile = file_get_contents('file.xml')
DOMDocument->loadXML($xmlFile)]

我假设如果XML文件出错那么很可能我根本无法查询DOMDocument? 无论如何,我有没有检查是否 a)当我调用DOMDocument-> Load / loadXML方法时,文档被加载了 b)使用外部资源验证XML文件(w3学校验证器是我所知道的唯一一个) c)如果XML文件不正确,无论如何我可以纠正它?

感谢所有那些抽出时间阅读本文的人。

最佳, Parijat Kalia

1 个答案:

答案 0 :(得分:0)

在做任何事之前尝试翻转它:

libxml_use_internal_errors(true);

然后在加载XML后,使用以下方法查找错误:

$errors = libxml_get_errors();

您可以迭代$errors(它是libXMLError个对象的数组。)

例如:

libxml_use_internal_errors(true);

try
{
    $doc = new DOMDocument();
    $doc->load("somebadxmlfile.xml");
}
catch (Exception $e)
{
    $errors = libxml_get_errors();

    foreach ($errors as $error)
    {
        echo $error->message . " [ Line: " . $error->line . " | Column: " . $error->column . " | Level: " . $error->level . " | File: " . $error->file . " ]";
    }
}