0

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

在上面的上下文中,我如何检查我的 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

4

1 回答 1

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 . " ]";
    }
}
于 2012-06-08T13:41:41.770 回答