我有很多要过滤的xml文件,我需要使用JOOX来完成。我正在使用它与XPATH过滤一个条件,但我需要至少两个条件,我想成为一个动态过滤,我可以添加更多的过滤器,如果它的请求,但至少我需要两个。先验我不知道xml的结构,也许两个条件引用兄弟节点。我的xml的结构是这样的:
<Message>
<Header>
<SequenceNumber>12345</SequenceNumber>
<OriginSystem>xxx</OriginSystem>
<Timestamp>141</Timestamp>
<ContentType>123</ContentType>
</Header>
<OriginCenter>
<CR id="xx" />
<LI id="We" />
</OriginCenter>
<MessageType>
<Type1 id="myId">
<Id>LAV6.OIR.282O</Id>
<TimeStampValue value="1430275652165" />
<State>
<UpToDate value="YES" />
<InterlockedRoute value="YES" routeType="Itinerario" />
<Sliding value="NOT" routeType="" />
<Blocked value="NOT" />
<Plaques>
<PlaqueO value="NOT" counter="0" />
<PlaqueV value="NOT" />
</Plaques>
<Dual value="YES" active="YES" />
</State>
<Flights number="1">
<Flight index="1" Id="09070" />
</Flights >
</Type1>
</MessageType>
<Optionals>
<Parameter1 name="" value="" />
<Parameter2 name="" value="" />
<Parameter3 name="" value="" />
</Optionals>
</Message>
示例可能是:找到 PlaqueV 具有属性值且值不且已阻止的所有消息>具有值的属性,其值为 NOT 。
我会用xpath知道结构的深度://Blocked[@value='NOT']/../Plaques/PlaqueV[@value='NOT']
在不知道结构的情况下,我怎样才能做到这一点?
谢谢!
答案 0 :(得分:0)
谢谢splash58,我终于解决了它创建一个动态字符串并将其传递给JOOX。
我的意思是:JOOX.$(file).xpath(conditions);
where条件是我使用你的建议创建的动态字符串:
Root[.//TAG[@property='value'] and .//TAG[content='value'] and...]