lxml和python:如何设置“全局”实体

问题描述 投票:1回答:1

我正在使用lxml来解析python中的xml文件。 xml的目的是配置我的代码。由于我需要使用略有不同的许多不同配置,我使用的是xi:include功能。

能够在“main”xml文件中声明一些实体并让包含的实体了解它们将非常有用。这是我的工作示例:

main.xml中:

<?xml version="1.0"?>
<!DOCTYPE doc> 
<configuration xmlns:xi="http://www.w3.org/2001/XInclude" name="foo" version="0.1" >
 <xi:include href="./external.xml" />
</configuration>

external.xml:

<?xml version="1.0"?>
<!DOCTYPE doc [
       <!ENTITY bar "example">
       ]>
<objects>
   <object name="&bar;" />
</objects>

我想要做的是在main.xml中声明bar,是否可以这样做?在此先感谢,Matteo

python xml lxml dtd xinclude
1个回答
0
投票

这不是我正在寻找的解决方案,但有点解决了我的问题:

main.xml中

<?xml version="1.0"?>
<!DOCTYPE doc>
<configurations>
    <configuration>
    <xi:include href="./external/confs.xml" xpointer="xpointer(/ext/conf1)" />
    </configuration> 

    <configuration>
    <xi:include href="./external/confs.xml" xpointer="xpointer(/ext/conf2)" />
    </configuration> 
</configurations>

confs.xml

<?xml version="1.0"?>
<!DOCTYPE doc[
    <!ENTITY foo "bar">
]>
    <ext>
       <conf1>
           <inc name="apple_&foo;" />   
       </conf1>

       <conf2>
           <inc name="orange_&foo;" />
       </conf2>

    </ext> 
© www.soinside.com 2019 - 2024. All rights reserved.