擅长:python、mysql、java
<p>解决这个问题的另一种方法是在解析文档之前将行号信息修补到文档中。想法如下:</p>
<pre><code>LINE_DUMMY_ATTR = '_DUMMY_LINE' # Make sure this string is unique!
def parseXml(filename):
f = file.open(filename, 'r')
l = 0
content = list ()
for line in f:
l += 1
content.append(re.sub(r'<(\w+)', r'<\1 ' + LINE_DUMMY_ATTR + '="' + str(l) + '"', line))
f.close ()
return minidom.parseString ("".join(content))
</code></pre>
<p>然后可以使用</p>
^{pr2}$
<p>很明显,这种方法有自己的缺点,如果您真的也需要列号,那么在中进行修补会更加复杂。另外,如果要提取文本节点或注释或使用<code>Node.toXml()</code>,则必须确保从任何意外匹配中去掉LINE_DUMMY_ATTR。在</p>
<p>与aknuds1的答案相比,这个解决方案的一个优点是它不需要弄乱minidom内部结构。在</p>