【发布时间】:2014-10-18 09:50:25
【问题描述】:
这是我的 xml 文件的一个小样本。
<w:p xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main">
<w:pPr>
<w:rPr>
<w:highlight w:val="yellow"/>
</w:rPr>
</w:pPr>
<w:bookmarkStart w:id="0" w:name="_GoBack"/>
<w:bookmarkEnd w:id="0"/>
<w:r w:rsidRPr="00D1434D">
<w:rPr>
<w:rFonts w:ascii="Times New Roman"
w:eastAsia="MS PGothic"
w:hAnsi="Times New Roman"/>
<w:b/>
<w:color w:val="000000"/>
<w:sz w:val="24"/>
<w:szCs w:val="24"/>
<w:highlight w:val="yellow"/>
</w:rPr>
<w:t xml:space="preserve">Responses to </w:t>
</w:r>
<w:r w:rsidR="00335D4A" w:rsidRPr="00D1434D">
<w:rPr>
<w:rFonts w:ascii="Times New Roman"
w:eastAsia="MS PGothic"
w:hAnsi="Times New Roman"/>
<w:b/>
<w:color w:val="000000"/>
<w:sz w:val="24"/>
<w:szCs w:val="24"/>
<w:highlight w:val="yellow"/>
<w:lang w:eastAsia="ja-JP"/>
</w:rPr>
<w:t>the Reviewer</w:t>
</w:r>
</w:p>
我想提取带有 w:highlight 标记的文本,该标记特别具有属性 value = "yellow" 。我搜索了它,但无法提出解决方案。
以下一般用于高亮显示:
for t in source.xpath('.//*[local-name()="highlight"]/../..//*[local-name()="t"]'):
do something
我试过了:
for t in lxml_tree.xpath('//*[local-name()="highlight"][@val="yellow"]/../..//*[local-name()="t"]'):
这不起作用,什么都不返回..
【问题讨论】:
-
对于未来的问题,请确保您的 XML 格式正确且可读(不适合长得令人难以置信的行)。此外,未声明
w:前缀,并且您的 XML sn-p 格式不正确,因为缺少</w:p>。 -
如何在 SO 上格式化 xml 数据??
-
this question 有点相似,但它不适用于 local-name()。
-
不能自动格式化。要么手动完成,要么例如执行正确缩进 XML 的 XSLT 标识转换。
标签: python xml python-2.7 xpath