父类下的特定标记的XPath

时间:2018-05-14 23:14:39

标签: xml xpath xsd elementtree

下午。我试图解析和xsd文件中的元数据。我想为每个父标签解析所有元素标签的元数据。例如,对于下面的Speed_Detail标记,我想收集与子element属性相关的所有数据。假设父母处于同一水平。

```

<xsd:element name="SpeedDetails">
        <xsd:complexType>
            <xsd:sequence>
                <xsd:element name="Header" type="global:HeaderInfoType"/>
                <xsd:element name="SpeedUnitOfMeasure" type="xsd:string" minOccurs="0"/>
                <xsd:element name="TileId" type="xsd:long" minOccurs="0"/>
                <xsd:sequence minOccurs="0" maxOccurs="unbounded">
                    <xsd:element name="Route" type="speed:RouteType"></xsd:element>
                </xsd:sequence>
                <xsd:sequence minOccurs="0" maxOccurs="unbounded">
                    <xsd:element name="Segment" type="speed:SegmentType"></xsd:element>
                </xsd:sequence>
            </xsd:sequence>
        </xsd:complexType>
    </xsd:element>

```

我知道我可以通过"//{ns}element".format(ns)访问所有元素,但这会给出整个树中的所有元素。

我一直试图用".[@name='{}']*/{}element".format(name,ns)之类的东西来收集元素。我无法让xpath工作,因为我不断获得invalid predicate error。有人可以解释为什么会这样吗?你将如何编写正确的xpath?请添加您的思想进动。

1 个答案:

答案 0 :(得分:0)

你在xpath中使用的-Name是什么?这是无效的xpath。要添加到该命名空间(.Name部分)通常在xpath解析器中被忽略。

所以在使用'rpcss', [pscustomobject] @{ Name = 'rpcss' } | Get-Service包的python中,我得到了非常好的结果:

{}