Python 在xpath中使用破折号在py dom xpath中不起作用
我现在正在使用Debian 4.1.1-21下的python 2.7.2。Python 在xpath中使用破折号在py dom xpath中不起作用,python,xml,xpath,Python,Xml,Xpath,我现在正在使用Debian 4.1.1-21下的python 2.7.2。 一切都很好,而不是一个XML元素 每当我尝试检查XML文档中的xpath(如//AAA/BBB/CCC-DDD时,都找不到路径。它是唯一一个有破折号的节点。我已经试着逃过了冲刺,但没有成功 我还尝试了/*[name()='CCC-DDD'],以开头,包含语句。元素在XML中是明确的,拼写也是正确的 我试了一个,它在那里工作完美无瑕,即使是短跑 非常感谢您的帮助。正在使用选项吗?XPath中的破折号在那里可以正常工作: i
一切都很好,而不是一个XML元素 每当我尝试检查XML文档中的xpath(如
//AAA/BBB/CCC-DDD
时,都找不到路径。它是唯一一个有破折号的节点。我已经试着逃过了冲刺,但没有成功
我还尝试了/*[name()='CCC-DDD']
,以
开头,包含
语句。元素在XML中是明确的,拼写也是正确的
我试了一个,它在那里工作完美无瑕,即使是短跑
非常感谢您的帮助。正在使用选项吗?XPath中的破折号在那里可以正常工作:
import lxml.etree as ET
content = '''<root><AAA><BBB><CCC-DDD>xyz</CCC-DDD></BBB></AAA></root>'''
doc = ET.fromstring(content)
print(doc.xpath('//AAA/BBB/CCC-DDD'))
将lxml.etree作为ET导入
内容=''xyz''
doc=ET.fromstring(内容)
打印(doc.xpath('//AAA/BBB/CCC-DDD'))
屈服
[<Element CCC-DDD at 0xb746f504>]
[]
这也可能是某种编码问题
这很可能是造成问题的原因。通过灰显以显示文件中每个破折号周围的上下文,确认破折号实际上是U+002D(“-
”):
grep -o '...-...' input-file.xml
还有你的剧本。彼此不匹配。是否尝试lxml.etree??这是一种高效的Python式xml解析方法。使用@unutbu中的示例xml,
'xyz'
、Debian Wheezy上的Python 2.7.3和py-dom-xpath-0.1,xpath.findnode('//AAA/BBB/CCC-DDD',doc)
对我很有用。您能提供您的XML输入文档吗?回答您的问题:Debian4?已经4年没有得到安全修复了。。。你应该认真考虑更新。如果这不起作用,它可能是Py DOM XPath中的一个错误(因为它是有效的XML)。这也可能是某种编码问题。您能提供一个小的示例数据集(SSCCE)吗?