我有以下PHP代码块:
if (file_exists($name)) {
$reader = new XMLReader();
$reader->open($name);
$reader->setSchema('inc/schema.xsd');
while($reader->read());
$reader->close();
} else {
die("you're having trouble with the files!");
}
对于某些网址,我收到以下错误:
警告:XMLReader :: read():未实现的块 .. \ xmlschemas.c:28351在xml2csv.php上 43
警告:XMLReader :: read():读入时发生错误 第43行的xml2csv.php
警告:DOMDocument :: load():标记产品中数据的过早结束 在products.xml中的第1行,第1行: 第55行的xml2csv.php中的532571
大多数情况下,给我这个问题的网址是本地网址(当$ name =“file.xml”时)或远程网址(当$ name =“http://www.domain.com/products.xml”)被破坏时(返回404,500,等)。
对错误进行简单的谷歌搜索就把我带到了这个:https://github.com/Chronic-Dev/libxml2/blob/master/xmlschemas.c
在提到的那一行,28351,似乎有一个文字说TODO。因为我的C技能非常有限(几乎没有),我想更好地理解这个错误的原因,我怎么能避免碰到它。
答案 0 :(得分:0)
正如XMLReader所述,open方法返回boolean,如果成功则为TRUE,如果失败则为FALSE。您可能想尝试下面的代码段吗?
if (file_exists($name)) {
$reader = new XMLReader();
if ($reader->open($name)) {
$reader->setSchema('inc/schema.xsd');
while($reader->read());
$reader->close();
}
} else {
die("you're having trouble with the files!");
}