2017-04-25 22 views
0

ためのすべてのサブノードをチェックしXQL:は、私は、次のXML持つ値

XQLを使用して
<?xml version="1.0" encoding="UTF-8" ?> 
<Ticket> 
<PlannedTraffic> 
    <Action> 
     <Value>Allow</Value> 
    </Action> 
    <Destination> 
     <Value>*</Value> 
    </Destination> 
    <ServiceApplication> 
     <Value>tcp/80</Value> 
    </ServiceApplication> 
    <Source> 
     <Value>10.130.5.5</Value> 
    </Source> 
    <ABF_flow_comment>Subscribe value</ABF_flow_comment> 
</PlannedTraffic> 
<PlannedTraffic> 
    <Action> 
     <Value>Allow</Value> 
    </Action> 
    <Destination> 
     <Value>*</Value> 
    </Destination> 
    <ServiceApplication> 
     <Value>tcp/22</Value> 
    </ServiceApplication> 
    <ServiceApplication> 
     <Value>tcp/21</Value> 
    </ServiceApplication> 
    <Source> 
     <Value>10.130.5.17</Value> 
    </Source> 
    <ABF_flow_comment>Comment with the word subscribe</ABF_flow_comment> 
</PlannedTraffic> 
</Ticket> 

を私はすべての「購読」という単語が含まれているかどうかを確認する必要があります。それらのすべてにsubscribeという単語が含まれている場合は、trueまたはすべてのノードを返します。 1つ以上の単語にsubscribeという単語が含まれていない場合は、falseまたは何も返さないようにする必要があります。 これにはどのXQLを使用できますか?

私は以下を試しましたが、 "Subscribe"という値のノードだけを返します。ただ1つのノードにそれが含まれていないと検出できません。私は、構文と完全に熟知していない

Ticket/PlannedTraffic[ABF_flow_comment =~ '/[sS]ubscribe/'] 

答えて

1

なぜ

not(Ticket/PlannedTraffic[not(contains(ABF_flow_comment, 'ubscribe'))]) 

それは何のPlannedTrafficは、これは私がまさに必要だったようにABF_flow_comment

+0

を持っていないではないがある場合のみtrueを返します。私はサラウンドを取り除かなければなりませんでした。それは完璧に機能しました!お手伝いありがとう! –

+0

喜んで助けてください!答えがあなたの問題を解決した場合、あなたはそれを受け入れることができます左の緑のマーク – splash58

0

を私は数で何かを(必要な推測)、その後、ノードの量と比較するが、私はそのXQLクエリを作成するかどうかはわかりません、私はどのように私を伝えることができますそれを達成するだろう。私はかかわらずに状態をサブスクライブする、すべてのノードのXPathを作成したい:

チケット/ PlannedTrafficを

私は、あなたのXPathののカウントが総項目に対する項目を返さ比較します上記のXPathに戻りました。それらが同じ場合、すべてが購読されます。 Seleniumを使用したJavaでは、私は以下を使用します:

int totNodes = driver.FindElements(By.XPath("//Ticket/PlannedTraffic").size(); 
int subNodes = driver.FindElements(By.XPath("//Ticket/PlannedTraffic[contains(@ABF_flow_comment,"ubscribed")]").size(); 
Boolean isAllSubscribed = (totNodes == subNodes); 

少なくとも、あなたに行く方向を与えるのに役立つ希望。

関連する問題