java - Apache xmlconfig xpath 不读取元素

标签 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">nagiosadmin</parameter>
   <parameter name="password">nagiosadmin</parameter>
   <parameter name="hostaddress">127.0.0.1/nagios/live.php?q=</parameter>  
</configuration>   

使用此代码:

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;}
    }

我不明白为什么返回值是“DEFAULT”而不是“C:\Users\bellibot\Desktop”,我测试了xpath语法并且它是合法的,我相信config.getString()在某种程度上不起作用。 感谢您的帮助。

最佳答案

ExpressionEngine类的实现XMLConfiguration不需要最上面的标签(在您的情况下为 <configuration>)成为搜索表达式的一部分。将搜索表达式替换为 String str = "parameter[@name='" + key + "']";将解决您的问题。

关于java - Apache xmlconfig xpath 不读取元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19730677/

相关文章:

xml - 如何将xml文件转换为R中的数据框

python - 使用 selenium (python) 从条件下拉列表中选择一个选项

xpath - 使用 xpath 检查字符串是否只有 ASCII 字符

xslt - 从上下文节点获取给定类型的第 n 个后代节点,它们可能不是兄弟节点

java - Android检测应用程序何时暂停

java - 如何用我的 listView 项目打开不同的 Activity ?

c# - XML 文档的松散合并

java - 使用不可观察的数据填充 TableView

java - 如何在 Java 7 中有效地连接 id 上的两个列表?

xml - 如何在Powershell中从哈希表值附加xml