0

我在 Python 中使用 etree 来解析 XML 文件,该文件恰好在节点内有一个“<”字符,所以它返回一个错误:

“与元素类型“BLAHBLAH”关联的属性 blahblah 的值不能包含“<”字符。

没有进入关于格式良好的 XML 的讨论(我别无选择,我没有编写 xml),我想知道是否有办法在 Python 中抑制 etree 中的错误,以便我可以继续解析 XML?

4

1 回答 1

0

因为小于号是用来包装 xml 元素的,<所以是预定义的 xml 字符实体之一。考虑读取文件并用<其实体值替换特定的违规(避免标签):&lt;在使用 xml.etree 解析之前在 XML 文件中:

import xml.etree.ElementTree as ET 

oldfile = "Original.xml" 
newfile = "Output.xml"

with open(oldfile, 'r') as otxt: 
    for rline in otxt: 
         if " < somenumber" in rline: 
            rline = rline.replace(" < somenumber", "&lt; somenumber")

         with open(newfile, 'a') as ntxt: 
            ntxt.write(rline)

tree = ET.parse(newfile)
于 2016-01-09T16:06:02.313 回答