XML和Java ......对价值与指数感到困惑?

时间:2011-07-17 01:57:52

标签: java xml

我试图了解如何使用Java读出XML文件。我想有一个XML标记,让我们调用它enable,将true传递给一个方法,另一个XML标记为另一个方法提供一个数字。我希望通过在我的XML文件中包含该行并将该数字作为valueofnumber传递来传递true。我正在读取XML文件,使用一系列if语句测试XML文件中的某些字符串:

public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException
    {
    if (localName.equals("enabled")){
        currentConfig.setenabled(true);
    }
    else if (localName.equals("number")){
        currentConfig.setnumber(Double.parseDouble(attributes.getValue("number")))
    }
}

我对如何从XML文件中提取数字值感到困惑。目前我只是在尝试getIndex()时遇到错误,没有任何内容。

非常感谢

1 个答案:

答案 0 :(得分:1)

您正在调用的getValue() method采用限定名称,即XML名称空间+本地名称,格式为:。您的XML文档可能使用了您必须提供的命名空间。如果没有命名空间,则可能需要使用other getValue() method并将null传递给命名空间。这完全取决于您正在使用的解析器以及它的配置方式。建议您最好转到更高级别的解析库,为您解决这些细微差别:

  • StAX的级别并不比SAX高很多,但它仍然具有更友好且通常更直观的界面。
  • 作为DOM解析器的
  • JDOM效率稍低,但它使解析XML非常容易。
  • Commons Digester是一种基于规则的XML解析引擎。您可以在遇到此元素或属性时为要执行的操作建立规则,然后运行消化程序。方法调用是您可以设置的规则之一,POJO的创建和填充也是如此。
  • JAXBXStream将彻底消除猜测,并以最少的配置将XML直接绑定到POJO。那么你甚至不必处理XML,而是可以使用普通对象。

编辑(基于XML示例)您的“数字”不是属性。这是一个嵌套元素。这就是你从Attributes对象中获取它的原因。我对其他图书馆的其他建议仍然存在。