我有一个unicode字符串,定义为
data= u'<project> <DataRuleDefinitions> <DataRuleDefinition name="dummy_def">
<ExecutableRule name="rule_dummy_def" excludeDuplicates="false"
folder="14_A_Loan_Loss_Projections;All"><Bindings> <Binding var="field"><Columnname="CLL_IA_SNAPSHOT.prod_files.prod_files."CLL_201706.csv".AccrualStatusChangeDate"/> </Binding> </Bindings> </ExecutableRule> </DataRuleDefinition>
</DataRuleDefinitions> </project>'
我尝试使用以下想法将其转换为xml:
import xml.etree.ElementTree as ET
tree = ET.fromstring(data)
但我遇到以下错误:
ParseError: not well-formed (invalid token): line 1, column 326
我可以帮助纠正此错误并将此unicode转换为xml吗?
答案 0 :(得分:1)
有两个主要问题, 似乎不是unicode to XML转换的问题。您的错误所提到的问题是格式不正确的XML,导致ParseError
。
问题在于以下XML行:
<Columnname="CLL_IA_SNAPSHOT.prod_files.prod_files."CLL_201706.csv".AccrualStatusChangeDate"/>
不允许元素名称中包含等号,将此数据分配给val属性(属性名称可以是任何内容):
<Columnname val="CLL_IA_SNAPSHOT.prod_files.prod_files."CLL_201706.csv".AccrualStatusChangeDate"/>
还有一个问题。引用 val ,但也引用 val的值。我们可以删除它们,逃避它们,或使用不同的引用封装:
<Columnname val="CLL_IA_SNAPSHOT.prod_files.prod_files.'CLL_201706.csv'.AccrualStatusChangeDate"/>
现在你应该没有问题。如果您想检查您的XML是否合适,可以use an online XML pretty printer,其中there are many。如果您的XML格式不正确,他们应该告诉您。祝你好运!