我有一个 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,我想将此值更改为代码块中显示的数学表达式。我尝试了两种方法均未成功:
<
和 >
使用
xml.etree.ElementTree
做这样的事情的正确方法是什么?
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>3) * (y <= 3) * 4 * x" />
</FUNCTION>
</CONDITIONS>
</NEKTAR>