将unicode转换为xml字符串

时间:2017-09-05 18:48:18

标签: python xml unicode

我有一个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吗?

1 个答案:

答案 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格式不正确,他们应该告诉您。祝你好运!