2017-09-05 62 views
0

我有一個unicode字符串,定義爲Unicode轉換成XML字符串

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嗎?

+2

您的XML格式不正確。具體來說,這個片段:''是無效的XML。 –

回答

1

有兩個主要問題,都不是Unicode轉換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格式不好。祝你好運!