2017-06-21 103 views
0

我有后续的XML包含空儿:找到节点和使用XPath

<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来完成它。

回答

0

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

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

感谢Andersoon,它在这个例子中的工作,但我需要的东西通用的,我之前并以不同的名称此节点之后有更多的节点,我无法代码// RiskDetails。无论如何,我试图从你的回应开始。 –