2015-11-03 1 views
0

У меня есть функция, которая принимает аргумент, называемый label. Затем эта метка используется для замены содержимого элемента «назначенNode» с помощью ElementTree.Unescape «& amp» при редактировании XML HTML

Функция пропускает все файлы xml в каталоге и записывает аргумент «label» в содержимое элемента.

Мой аргумент «label» содержит символ «&», но когда ET записывает его в xml-файл, он отображается как «& amp».

Может кто-нибудь проинструктировать меня, как отменить этот символ и заставить его написать символ «&»?

вот мой код:

def apply_label(label): 

clone_path = os.getcwd() 
for root, dirs, files in os.walk(clone_path): 
    for f in files: 
    try: 
     tree = ET.ElementTree(file=f) 
     root = tree.getroot() 
     for assignedNode in root.iter("assignedNode"): 
      assignedNode.text = label 
      tree = ET.ElementTree(root) 
      with open(f, "w") as a: 
       tree.write(a) 
    except : 
     pass 
+0

Возможный дубликат [Декодировать HTML-объекты в строке Python?] (Http://stackoverflow.com/questions/2087370/decode-html-entities-in-python-string) –

+0

@AkhilThayyil No- это не дубликат. Многие из сообщений о переполнении стека показывают, как вытащить текст уже в XML и вернуть его неэкранированную версию. Я хочу вывести текст в XML, который не запускается с самого начала. Или, по крайней мере, отредактируйте содержимое элемента, чтобы отобразить неэкранированные символы в XML-файле. – Thomas

+0

& является символом escape в xml, по этой причине парсер ElementTree преобразует его в & amp noation –

ответ