XPath式が「false」と評価された場合に備えて、Javaに「0」を生成させたいと思います。
私はこの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");
'content1'は'false'を返すため、4つの要素のみを返します。コンテンツに文字列'$$$'が含まれているn-gramノードはありません。ただし、残りのコンテンツノードは「true」と評価されます。
これらのcontains()式の1つが「false」と評価された場合、Xamlコードに「0」を描画する必要があります。次のように、画面に「0」が表示される必要があります。
'# # #' = 0.0015
'? ? ?' = 0.0047
'k i d' = 0.0012
'$ $ $' = 0
この「0」を取得できません。「コンテンツとして'$$ $'を含むノードがない場合は、ゼロを返します。
これを行う方法についてのアイデアはありますか?
ありがとうございました。