Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.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
Xml 父项下指定标记的XPath_Xml_Xpath_Xsd_Elementtree - Fatal编程技术网

Xml 父项下指定标记的XPath

Xml 父项下指定标记的XPath,xml,xpath,xsd,elementtree,Xml,Xpath,Xsd,Elementtree,下午好。我正在尝试从和xsd文件解析元数据。我想为每个父标记解析来自所有元素标记的元数据。例如,对于下面的Speed\u Detail标记,我想收集与子元素属性相关的所有数据。假设父母处于同一水平 ``` ``` 我知道我可以通过“//{ns}element.format(ns)访问所有元素,但这会给出整个树中的所有元素 我一直试图用类似于“[@name='{}']*/{}element.format(name,ns)的东西来收集元素。我无法使xpath正常工作,因为我不断遇到无效谓词错误。

下午好。我正在尝试从和xsd文件解析元数据。我想为每个父标记解析来自所有元素标记的元数据。例如,对于下面的
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']