0

我正在尝试将ENTITY放入外部DTD文件中,但在解析时它没有在XML中显示ENTITY的值。

但是当我将XMLDTD组合在下面的一个文件中时,它的工作是我的XMLDTD代码

信息.xml

<!DOCTYPE info SYSTEM "./Note.dtd">  <info>   
<info>
<company>&company_info;</company>   
<privacy_policy>&privacy_policy;</privacy_policy>  </info>
</info>

注意.dtd

<!ENTITY company_info "<name>Test Company</name><location>Berlin</location><phone>1800-000-000</phone>">
<!ENTITY privacy_policy "Lorem ipsum dolor sit amet, consectetur adipisicing elit, .">

info.xmlNote.dtd在同一个文件夹中

4

2 回答 2

1

我不确定您使用什么来解析 XML,但我知道<info>如果您使用文件扩展名“.dtd”,Xerces 会抛出关于未声明的错误。

尝试将“Note.dtd”更改为“Note.ent”。

我用你的示例文件做了这个,错误就消失了。此外,我能够在您的原始 info.xml 上使用 Saxon 进行身份转换,并且实体引用已正确解析。

于 2012-02-02T07:56:46.400 回答
0

<p>
i had the same problem..just use php instead

<?php
libxml_disable_entity_loader(false);
// code injection from the client side
$file='<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE login SYSTEM "http://localhost/e.ent">
<login><user>&name;</user><pass>password</pass></login>';
//
$dom=new DOMDocument();
$dom->loadXML($file,LIBXML_NOENT | LIBXML_DTDLOAD);
$element=$dom->getElementsByTagName('user')[0];
echo $element->nodeValue;
?></p>

于 2020-09-11T18:23:20.830 回答