gpt4 book ai didi

php - 如何验证没有 DTD 的 xml 文件

转载 作者:行者123 更新时间:2023-12-03 23:54:03 25 4
gpt4 key购买 nike

我有一个要操作的 XML 文件,并且正在使用 XSLT 进行处理。我想在 XSLT 转换之前验证 XML 文件。这是我的代码:

<?php

$doc = new DOMDocument();
$doc->load('somefile.xml');

$isValid = $doc->validate();

if(!$isValid) {
echo "$doc is INVALID!";
}else{

$xsldoc = new DOMDocument();
$xsldoc->load('somename.xslt');


$xslt = new XSLTProcessor();
$xslt->importStylesheet($xsldoc);


$result = $xslt->transformToDoc($doc);
$result->save('somefile.xml');
}
?>

但是在运行这个 php 文件后,我得到以下错误:

Warning: DOMDocument::validate(): no DTD found! in C:\test.php on line 10

Catchable fatal error: Object of class DOMDocument could not be converted to string in C:\test.php on line 13

我没有要验证的 DTD 文件,那么我现在如何验证?

谢谢!

最佳答案

以下是 XML 文件的两个验证级别。第一个是 XML 语法本身。符合该规则的 XML 文档称为“格式良好的”。您通过加载 XML 来执行此验证。

libxml_use_internal_errors(TRUE);
$dom = new DOMDocument();
$dom->load($file);
var_dump(libxml_get_errors());

根据您的一般错误处理,这可能会变得更高级。请注意,这里也可能是警告和通知。 DOMDocument 有一些自动更正。

第二级是针对您的 XML 格式的特定规则进行验证。仅当您使用 DTD、Schema 或 RelaxNG 定义规则时,才能进行此验证。

关于php - 如何验证没有 DTD 的 xml 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20188293/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com