2014-09-01 48 views
0

我想在下面的節點中用一個新節點「<column/>」代替分號「:」的所有實例,如下所示。Python:如何用新節點替換XML文件中的字符?

我想這一點:

<SHORTNAME>觸發:數字邊緣:源</SHORTNAME >

變成這個樣子:

<SHORTNAME>觸發<冒號/ >數字邊緣<結腸/ >來源</SHORTNAME >

我已經嘗試使用搜索和替換字符串,但是當我得到的輸出所有的「<>」更改爲& LT和& GT。 任何人都可以請建議任何技術來做到這一點。 謝謝

回答

1

的想法是讓節點文本,用冒號分割,並通過一個加一,而每一個冒號設置.tail

import xml.etree.ElementTree as ET 

data = """<?xml version="1.0" encoding="UTF-8" ?> 
<body> 
    <shortName>Trigger:Digital Edge:Source</shortName> 
</body>""" 

tree = ET.fromstring(data) 
for element in tree.findall('shortName'): 
    items = element.text.split(':') 
    if not items: 
     continue 

    element.text = items[0] 
    for item in items[1:]: 
     colon = ET.Element('colon') 
     colon.tail = item 
     element.append(colon) 

print ET.tostring(tree) 

打印:

<body> 
    <shortName>Trigger<colon />Digital Edge<colon />Source</shortName> 
</body> 
+0

這完美地工作爲了我。謝謝你的快速反應。還有一件事。當我漂亮地打印XML時,就出現了。我希望整個shortName如上所示爲一行。有沒有辦法做到這一點? – Vatsal 2014-09-01 08:34:34