Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在xpath中使用破折号在py dom xpath中不起作用_Python_Xml_Xpath - Fatal编程技术网

Python 在xpath中使用破折号在py dom xpath中不起作用

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

我现在正在使用Debian 4.1.1-21下的python 2.7.2。
一切都很好,而不是一个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)吗?