我希望Java在XPath表達式計算爲'false'時生成'0'。如何獲得布爾XPath表達式的結果(例如'false')?
我有這樣的Java代碼:
//Read the input XML document
private SAXBuilder parser = new SAXBuilder();
private Document characters;
private XPath pProbs;
private List<Attribute> probs;
private Double[] dprobs;
private String pathToSourceXml;
private String content1, content2, content3, content4, content5;
characters = parser.build(pathToSourceXml);
pProbs = XPath.newInstance("/n-grams-sorted/n-gram[contains(.,"+content1+") or contains(.,"+content2+") or contains(.,"+content3+") or contains(.,"+content4+") or contains(.,"+content5+")]/@probability");
probs = (List<Attribute>) pProbs.selectNodes(characters);
...
//Return all the values of the @probability attibrutes
public Double[] getProbs(String pathToSourceXml) {
this.pathToSourceXml = pathToSourceXml;
List<Double> theDoubles = new ArrayList();
dprobs = new Double[5];
for (int i=0; i<probs.size(); i++) {
theDoubles.add(Double.parseDouble(probs.get(i).getValue()));
dprobs[i] = theDoubles.get(i);
}
return dprobs;
}
這裏的問題是,這種代碼:
pProbs = XPath.newInstance("/n-grams-sorted/n-gram[contains(.,"+content1+") or contains(.,"+content2+") or contains(.,"+content3+") or contains(.,"+content4+") or contains(.,"+content5+")]/@probability");
只返回4個元素,因爲 '內容1' 回報 '假'。沒有n-gram節點,其內容包含字符串'$ $ $'。但是,其餘內容節點的評估結果爲「true」。
如果其中一個包含()表達式的計算結果爲'false',那麼我必須在Xaml代碼中繪製'0'。 '0'必須出現在屏幕上,例如:
'# # #' = 0.0015
'? ? ?' = 0.0047
'k i d' = 0.0012
'$ $ $' = 0
我無法讀取此'0'。我不知道怎麼說:「萬一回零,有包含‘$ $ $’爲內容沒有節點
如何做到這一點的任何想法
謝謝
?
爲什麼當你可以用Java創建一個時,XPath應該返回一個'0'? XPath只能選擇表單*實際存在的*。 – Tomalak
無論哪種方式,我試圖得到一個0,如果其中一個元素不包含特定的字符串'x y z'。 – MrStack
你不會。 XPath是一種選擇語言,不能保證您可以選擇您要求的內容。讓5個表達式在一個循環中運行並分別將結果(或0)分配給數組。 – Tomalak