我无法弄清楚以下问题。我想基于SYSTEM解析DTD中的外部实体: 我运行最新的Ubuntu 12.10 ..没有自定义更改!
我有以下PHP测试代码:
<h1>simpleXml Demo</h1>
<form name="input" action="" method="POST">
<textarea name="xmlInput"></textarea><br />
<input type="submit" value="Submit">
</form>
<?php
if(isset($_POST['xmlInput']) and strlen($_POST['xmlInput'])>0){
$doc = simplexml_load_string($_POST['xmlInput']);
echo "<pre>";
print_r($doc);
echo "</pre>";
?>
示例1: 运行此XML文件时,实体&amp; foo;已经解决了。
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE results [
<!ENTITY test "some text,">
]>
<results>
<result>This result is &test;</result>
</results>
示例2: 运行此XML文件时,实体&amp; foo;只是被一无所有 - 完全没有错误!
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE result [
<!ENTITY test SYSTEM "http://textfiles.com/food/btaco.txt">
]>
<results>
<result>This result is &test;</result>
</results>
我已经玩过'libxml_disable_entity_loader()',它没有改变任何东西!
答案 0 :(得分:1)
在解析XML数据时尝试使用LIBXML_NOENT选项。这是违反直觉的,但这将启用外部实体,并且会发生对URL的请求。