Xml 父项下指定标记的XPath
下午好。我正在尝试从和xsd文件解析元数据。我想为每个父标记解析来自所有元素标记的元数据。例如,对于下面的Xml 父项下指定标记的XPath,xml,xpath,xsd,elementtree,Xml,Xpath,Xsd,Elementtree,下午好。我正在尝试从和xsd文件解析元数据。我想为每个父标记解析来自所有元素标记的元数据。例如,对于下面的Speed\u Detail标记,我想收集与子元素属性相关的所有数据。假设父母处于同一水平 ``` ``` 我知道我可以通过“//{ns}element.format(ns)访问所有元素,但这会给出整个树中的所有元素 我一直试图用类似于“[@name='{}']*/{}element.format(name,ns)的东西来收集元素。我无法使xpath正常工作,因为我不断遇到无效谓词错误。
Speed\u Detail
标记,我想收集与子元素
属性相关的所有数据。假设父母处于同一水平
```
```
我知道我可以通过“//{ns}element.format(ns)
访问所有元素,但这会给出整个树中的所有元素
我一直试图用类似于
“[@name='{}']*/{}element.format(name,ns)
的东西来收集元素。我无法使xpath正常工作,因为我不断遇到无效谓词错误
。有人能解释一下为什么会这样吗?如何编写正确的xpath?请加上你的思维过程 您在XPath中一直使用的{}
是什么?这是无效的xpath。添加到该名称空间中(xsd:部分)通常在xpath解析器中被忽略
因此,在使用lxml
包的python中,我得到了非常好的结果:
>>> tree.xpath('//sequence/element/@name')
['Header', 'SpeedUnitOfMeasure', 'TileId', 'Route', 'Segment']
我们鼓励大家提出一个问题,尝试改进你的问题,因为没有代码(本例中是python?)很难回答。这只是python中的字符串格式符号。如果排除名称空间,则无法获得匹配的标记。在这种情况下,你能解释一下序列吗?序列是包含所有元素节点的节点。哈,好吧,这听起来很明显。我试试lxml包。
>>> tree.xpath('//sequence/element/@name')
['Header', 'SpeedUnitOfMeasure', 'TileId', 'Route', 'Segment']