如何使用Python正确使用转义字符将数学字符串写入XML文件?

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

我有一个 XML 文件,我正在尝试使用 Python 编辑该文件。这是 XML 文件内容的示例:

<?xml version="1.0" encoding="utf-8"?>
<NEKTAR>
    <CONDITIONS>
        <FUNCTION NAME="Baseflow">
            <E VAR="u0" VALUE="(x>3) * (y <= 3) * 4 * x"/>
        </FUNCTION>
    </CONDITIONS>
</NEKTAR>

在原始文件中,

u0
的值设置为
0
。使用 Python,我想将此值更改为代码块中显示的数学表达式。我尝试了两种方法均未成功:

  1. 使用转义字符(例如
    &lt;
    &gt;
  2. )书写不等式
  3. 尝试使用CDATA

使用

xml.etree.ElementTree
做这样的事情的正确方法是什么?

python xml-parsing
1个回答
0
投票

xml
包会自动为您完成转义工作。这能满足您的需求吗? (将E标签的VALUE替换为给定的需要转义的方程)

from xml.etree import ElementTree

ORIGINAL = """<?xml version="1.0" encoding="utf-8"?>
<NEKTAR>
    <CONDITIONS>
        <FUNCTION NAME="Baseflow">
            <E VAR="u0" VALUE="0"/>
        </FUNCTION>
    </CONDITIONS>
</NEKTAR>"""

TARGET = '(x>3) * (y <= 3) * 4 * x'

x = ElementTree.fromstring(ORIGINAL)

# find all E tags
els = x.findall('.//E')

for el in els:
    el.set('VALUE', TARGET)
x_mod = ElementTree.tostring(x).decode()

print(x_mod)

结果:

<NEKTAR>
    <CONDITIONS>
        <FUNCTION NAME="Baseflow">
            <E VAR="u0" VALUE="(x&gt;3) * (y &lt;= 3) * 4 * x" />
        </FUNCTION>
    </CONDITIONS>
</NEKTAR>
© www.soinside.com 2019 - 2024. All rights reserved.