2015-05-17 3 views
0

Я пытаюсь получить определения для конкретного слова, которые соответствуют для строки ввода пользователя из 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 правильным? Что я делаю неправильно?

+0

Можете ли вы предоставить нам пример ввода пользователя и как он соответствует слову в xml? – MChaker

+0

, например, пользователь вводит слово «base» в xmlInput edittext. Я объявляю это как переменную «myexpr», чтобы использовать ее в selectXPath, поэтому получить только определение «base». Я сделал это с помощью синтаксического анализатора sax xml, но он медленный. – user2057220

ответ

0

В AutoPilot есть функция declareVariableExpression(), которая позволяет объявлять переменные выражения.

+0

Я использую эту функцию (см. Выше), но я не получаю желаемого результата. Я много раз искал vtd-xml и xpath последние дни, но я ничего не нашел для своего дела. Есть некоторые связанные учебники, но с использованием чисел, а не строк. Поэтому я импортировал XML-файл в базу данных sqlite, и я попытаюсь использовать этот способ, который, возможно, быстрее от разбора xml (мой файл - 6 МБ). Я до сих пор не использовал xml-синтаксический анализ, и большинство из них я хотел использовать. Но мне было сложно манипулировать vtd-xml, а для моего приложения sax очень медленный (для этого я искал и нашел vtd-xml). – user2057220

+0

Что находится в вашей строке xmlInput? –

+0

Я посмотрел на ваш код, вы включили пространство имен при анализе xml-файла? –