0

我将 php 与 xmlreader 一起使用。我正在尝试读取包含包含语句的文件。xmlreader 似乎不知道如何处理包含,只是将其视为“正常”元素。读者现在看起来像这样。

if (!$reader->open($file)) {
    die("Failed to open '.xml'");
}
while($reader->read()) {
 echo $reader->nodeType . " " . $reader->name . "<br/>";
}
$reader->close();

顶级 XML 如下所示:

<?xml version="1.0" ?>

<?xml-stylesheet type="text/xsl" href="AdvDisad.xsl"?>

<!DOCTYPE kaw [ <!ENTITY brvbar "|"> ]>

<mydata xmlns:xi="http://www.w3.org/2001/XInclude">
 <xi:include href="adv.xml"/>
</mydata>

输出是这样的:

7 xml-stylesheet
10 kaw
1 mydata
14 #text
1 xi:include
14 #text
15 mydata

如您所见, xi 并没有被解释为有什么特别之处。我需要自己处理吗?如果是这样,实体会传递吗?这是我首先打扰包含的原因。

4

1 回答 1

1

您可以传递给 XMLReader的LIBXML选项之一指示它替换 XIncludes:

$reader->open($file, null, LIBXML_XINCLUDE);

PHP 的 DOM 扩展也可以使用以下xinclude方法“手动”解析 XIncludes:

$doc = new DomDocument;
$doc->load($file);
$doc->xinclude();
于 2012-10-09T03:00:49.833 回答