如何在log4j.xml中使用DTD ENTITY外部引用

Maw*_*wia 4 java xml dtd log4j

我试图使用外部dtd文件中的实体.

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd" 
[<!ENTITY logHome SYSTEM "log4j-entity.dtd">]
>
Run Code Online (Sandbox Code Playgroud)

log4j的-entity.dtd

<?xml version="1.0" encoding="UTF-8"?>

<!ENTITY logHome "/root/crm_test/">
Run Code Online (Sandbox Code Playgroud)

我试图在这样的属性值中使用实体值.

<param name="File" value="&logHome;log/info.log"/>
Run Code Online (Sandbox Code Playgroud)

我得到这个错误:

The external entity reference "&logHome;" is not permitted in an attribute value.
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

注意:

这件事有效..

<!ENTITY logHome  "/root/crm_test/">
Run Code Online (Sandbox Code Playgroud)

Dan*_*ley 5

您需要将内部子集中的实体作为参数实体,然后引用它.

更改:

<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd" 
[<!ENTITY logHome SYSTEM "log4j-entity.dtd">]
>
Run Code Online (Sandbox Code Playgroud)

至:

<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd" [
<!ENTITY % logHome SYSTEM "log4j-entity.dtd">
%logHome;
]>
Run Code Online (Sandbox Code Playgroud)