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