繁体   English   中英

带有xmlreader的php-如何使xi:include工作?

[英]php with xmlreader - how do you make xi:include work?

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

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并不被解释为任何特殊的东西。 我需要自己处理吗? 如果是这样,该实体会通过吗? 这是我首先困扰包含的原因。

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

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

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

$doc = new DomDocument;
$doc->load($file);
$doc->xinclude();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM