gpt4 book ai didi

python - 使用 Python 解析 XML 时保留特殊字符?

转载 作者:太空宇宙 更新时间:2023-11-03 19:18:49 24 4
gpt4 key购买 nike

我有一个 XML 文件,我正在使用 Python 解析该文件并将其作为 Python 代码输出到文件中。

一些 XML 包含 Reg Ex 值和字符串,它们将在屏幕上显示为对话框,因此我需要维护一些特殊字符。代码如下,但是如何做到这一点呢?

XML 看起来有点像这样;

<variable id="passportnumber" value="" type="String">
<validate>
<regularExpression fieldID="passportnumber" errorID="3007162"><![CDATA[^[a-zA-Z+:?<>;*()%="!0-9./',&\s-]{1,35}$]]></regularExpression>
</validate>
</variable>

还有一个对话框;

<if>
<condition><![CDATA[$taxcode$ == $previousemergencytaxcode$ and $previousemergencytaxcode$ != $emergencytaxcode$]]></condition>
<then>
<dialog id="taxCodeOutdatedDialog" text="Are you sure this is the correct tax
code? &#10; &#10;The emergency code for the tax year 2011-12 was
'$previousemergencytaxcode$'. &#10;The emergency code for the tax
year 2012-13 is '$emergencytaxcode$'. &#10; &#10;Proceed?" type="YES|NO|CANCEL" />
</then>
</if>

完整的Python脚本是here解析这两个的具体细节是;

def parse_regularExpression(self, elem):
self.out('')
self.out("item_regularExpression(fieldID='{0}', value='{1}')".format(elem.attrib['fieldID'],elem.text))

def parse_dialog(self, elem):
self.out('')
self.out("item_dialog(id='{0}', text='{1}', type='{2}')".format(elem.attrib['id'], elem.attrib['text'],elem.attrib['type']))

换行符( )是我不确定如何处理的主要问题。看来 etree 正在将其输出为换行符,即使它是三重引号的。它将文本值输出为;

item_dialog(id='taxCodeOutdatedDialog', text='Are you sure this is the correct tax code? 

The emergency code for the tax year 2011-12 was '$previousemergencytaxcode$'.
The emergency code for the tax year 2012-13 is '$emergencytaxcode$'.

Proceed?', type='YES|NO|CANCEL')

最佳答案

我认为这正是您告诉它要做的事情。 XML 包含 我认为这是换行符。然后你打印出该字符串。

如果您想在打印输出中用其他内容替换换行符,那么您最好在阅读它之后但在输出它之前这样做。 (而不是尝试在 XML 中更改它)。

你的代码最终会看起来像这样:

def parse_dialog(self, elem):
self.out('')
self.out("item_dialog(id='{0}', text='{1}', type='{2}')".format(
escape_string(elem.attrib['id']),
escape_string(elem.attrib['text']),
escape_string( elem.attrib['type']) ))

def escape_string(s):
...

这也更加可靠,因为您的问题本质上是脚本注入(inject)问题/漏洞。

关于python - 使用 Python 解析 XML 时保留特殊字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10495387/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com