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
使用Xpath查找包含空子节点的节点和_Xpath - Fatal编程技术网

使用Xpath查找包含空子节点的节点和

使用Xpath查找包含空子节点的节点和,xpath,Xpath,我有以下xml: <RiskDetails> <RatingSequence direction="O" value="2"></RatingSequence> <VehicleDetails></VehicleDetails> <RiskFeatures></RiskFeatures> <Drivers> <DriverDetails>&l

我有以下xml:

<RiskDetails>
    <RatingSequence direction="O" value="2"></RatingSequence>
    <VehicleDetails></VehicleDetails>
    <RiskFeatures></RiskFeatures>
    <Drivers>
        <DriverDetails></DriverDetails>
        <DriverDetails></DriverDetails>
        <DriverDetails></DriverDetails>
    </Drivers>
    <CoverDetails></CoverDetails>
    <LoadDiscountDetails>
        <LoadDiscount></LoadDiscount>
        <LoadDiscount></LoadDiscount>
    </LoadDiscountDetails>
</RiskDetails>

我需要动态查找没有值或属性的每个子节点。我试图找到返回以下节点的Xpath,但没有成功:

<VehicleDetails></VehicleDetails>
<RiskFeatures></RiskFeatures>
<Drivers>
    <DriverDetails></DriverDetails>
    <DriverDetails></DriverDetails>
    <DriverDetails></DriverDetails>
</Drivers>
<CoverDetails></CoverDetails>
<LoadDiscountDetails>
    <LoadDiscount></LoadDiscount>
    <LoadDiscount></LoadDiscount>
</LoadDiscountDetails>

我将删除这些节点,并仅保留具有以下值的节点及其父节点:

<RiskDetails>
    <RatingSequence direction="O" value="2"></RatingSequence>
</RiskDetails>


我可以按层次进行操作,但是我尝试只使用一个Xpath。

您可以尝试使用下面的
Xpath
来获得所需的输出:

//RiskDetails/*[not(@* or string())]

感谢Andershoon,它确实适用于这个示例,但是我需要一些通用的东西,我在这个节点前后有更多的节点具有不同的名称,我无法硬编码//详细信息。不管怎样,我试着从你的反应开始。