Java Apache xmlconfig xpath未读取元素

Java Apache xmlconfig xpath未读取元素,java,xml,xpath,getstring,Java,Xml,Xpath,Getstring,我要读取此xml文件: <configuration> <parameter name="path">C:\Users\bellibot\Desktop</parameter> <parameter name="filename">config.xml</parameter> <module type="livestatus" id="0001"> <parameter name="username">

我要读取此xml文件:

<configuration>
 <parameter name="path">C:\Users\bellibot\Desktop</parameter>
 <parameter name="filename">config.xml</parameter>
 <module type="livestatus" id="0001">
   <parameter name="username">nagiosadmin</parameter>
   <parameter name="password">nagiosadmin</parameter>
   <parameter name="hostaddress">127.0.0.1/nagios/live.php?q=</parameter>  
</configuration>   
我不明白为什么返回值是“DEFAULT”而不是“C:\Users\bellibot\Desktop”,我测试了xpath语法,它是合法的,我相信config.getString()不知何故不起作用。
感谢您的帮助。

XMLConfiguration
ExpressionEngine
实现不需要最上面的标记(在您的情况下,它将是
)作为搜索表达式的一部分。将搜索表达式替换为
String str=“parameter[@name=”+key+”]
将解决您的问题。

您可以尝试两件事:a)在
str
的赋值项中将
/text()
附加到XPath表达式中,以及b)在输入XML中预先添加有效的XML声明(例如
)。尝试了这两种方法都没有成功,无论如何,谢谢。还有一个想法:在另一个ExpressionEngine属性样式表示法实现中,最上面的标记(在您的情况下是
)不是搜索表达式的一部分。你能用
String str=“parameter[@name=”+key+“]”试试吗?成功了!谢谢你的帮助,非常感谢!我从我们的结论中得出了答案。你能选一下吗?
class XMLslave {
XMLConfiguration config;
String defval = "DEFAULT";


public XMLslave(){}

public XMLslave(String path, String filename){
    try{
    String str = path + "\\" + filename;
    File file = new File(path, filename); 
    this.config = new XMLConfiguration(file);
    this.config.setExpressionEngine(new XPathExpressionEngine());
    }catch(ConfigurationException e){}
}

public static void main(String[] args) {
    try{
    BufferedReader in = new BufferedReader(
            new InputStreamReader(System.in));
    System.out.println("Insert Path");
    String path = in.readLine();
    System.out.println("Insert Filename");
    String filename = in.readLine();
    XMLslave slave = new XMLslave(path, filename);
    String str = slave.getKey("path");   
    System.out.println(str);    
    }catch (IOException e){}
}

String getKey(String key){
    String result;
    String str = "/configuration/parameter[@name='" + key + "']";
    result = this.config.getString(str);
    if (result==null){
        return this.defval;
    }else{
        return result;}
    }