Java vtd xml xpath,如何使用变量表达式?
我试图从xml中获取与用户输入字符串匹配的特定单词的定义:Java vtd xml xpath,如何使用变量表达式?,java,xml,xpath,android-xml,vtd-xml,Java,Xml,Xpath,Android Xml,Vtd Xml,我试图从xml中获取与用户输入字符串匹配的特定单词的定义: <?xml version="1.0" encoding="UTF-8" ?> <diction> <article> <key>a</key> <definition> ένας, μια, μία, ένα </definition> </article> <article> <key>a</key&
<?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>
上面的代码提供了所有单词/定义,而不仅仅是与输入字符串匹配的单词/定义。xpath表达式正确吗?我做错了什么?自动驾驶仪中有一个名为declareVariableExpression()的函数,允许您声明变量表达式。您能给我们提供用户输入的示例,以及它如何与xml中的单词匹配吗?例如,用户在xmlInput edittext中输入单词“base”。我将其声明为“myexpr”变量,以便在selectXPath中使用它,从而仅获取“base”的定义。我已经用SAXXML解析器完成了这项工作,但是速度很慢。我正在使用这个函数(见上文),但没有得到预期的结果。在过去的几天里,我搜索了很多关于vtd xml和xpath的内容,但没有找到任何适合我的案例。有一些相关的教程,但使用的是数字,而不是字符串。因此,我将xml文件导入sqlite数据库,我将尝试这种方法,这可能比xml解析更快(我的文件是6MB)。到目前为止,我还没有使用xml解析,而对于这一点,我最想使用它。但是我发现很难操作vtd xml,而sax对于我来说非常慢(为此我搜索并找到了vtd xml)。xmlInput字符串中有什么?我查看了您的代码,在解析xml文件时是否启用了名称空间?我放弃了vtd xml,因为数据库方式可以非常快速地给出结果,以防将来对其他人有所帮助,不,我没有。也许这就是问题所在。
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();