Я бы хотел, чтобы Java генерировала '0' в случае, если выражение XPath оценивается как 'ложное'.
У меня есть этот код 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 элемента, потому что 'content1' возвращает 'false'.Нет узлов n-граммы, содержимое которых содержит строку '$ $ $'.Однако остальные узлы содержимого оцениваются как «истина».
Если одно из этих выражений содержит () оценивается как «ложь», я должен нарисовать «0» в своем коде Xaml.На экране должно появиться «0», например:
'# # #' = 0.0015
'? ? ?' = 0.0047
'k i d' = 0.0012
'$ $ $' = 0
Я не могу получить это «0».Я не знаю, как сказать: «вернуть ноль, если нет узлов, содержащих« $ $ $ »в качестве содержимого.
Есть идеи, как это сделать?
Спасибо.