Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java vtd xml xpath,如何使用变量表达式?_Java_Xml_Xpath_Android Xml_Vtd Xml - Fatal编程技术网

Java vtd xml xpath,如何使用变量表达式?

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中获取与用户输入字符串匹配的特定单词的定义:

<?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();