Я пытаюсь получить определения для конкретного слова, которые соответствуют для строки ввода пользователя из XML:vtd-xml xpath, как использовать переменное выражение?
<?xml version="1.0" encoding="UTF-8" ?>
<diction>
<article>
<key>a</key>
<definition>
ένας, μια, μία, ένα
</definition>
</article>
<article>
<key>a</key>
<definition>
α (στερητικό)
</definition>
</article>
<article>
<key>all</key>
<definition>
όλος, όλη, όλο
</definition>
</article>
<article>
<key>a.m</key>
<definition>
π.μ., πρωί
</definition>
</article>
<article>
<key>base</key>
<definition>
base
</definition>
</article>
</diction>
код:
ap.declareVariableExpr("myexpr", xmlInput.getText().toString().replaceAll("\\s+$", ""));
ap.selectXPath("/diction/article/key[local-name()=string($myexpr)]");
//ap.evalXPathToString();
//ap.selectXPath("/diction/article/key");
ap.bind(vn);
int i;
while ((i=ap.evalXPath()) !=-1){
i=vn.getText();
vn.push();
if(vn.toElement(VTDNav.NEXT_SIBLING, "definition")) {
int j = vn.getText();
if (j != -1)
parsedData=parsedData+"word: " + vn.toNormalizedString(i) + "\n"
+ "definition: " + vn.toNormalizedString(j) +"\n";
Log.i("first", parsedData);
}
vn.pop();
}
ap.resetXPath();
Приведенный выше код дает мне все слова/определений и не только те, которые соответствуют входной строке. Является ли выражение xpath правильным? Что я делаю неправильно?
Можете ли вы предоставить нам пример ввода пользователя и как он соответствует слову в xml? – MChaker
, например, пользователь вводит слово «base» в xmlInput edittext. Я объявляю это как переменную «myexpr», чтобы использовать ее в selectXPath, поэтому получить только определение «base». Я сделал это с помощью синтаксического анализатора sax xml, но он медленный. – user2057220