如何使用Java从XML文件提取数据?

| 我的XML文件:
<?xml version=\"1.0\" encoding=\"UTF-8\"?>
<devices>
 <device mobile=\"true\" supported=\"false\">Windows CE</device>
 <device mobile=\"false\" minVersion=\"2\">Firefox</device>
 <device mobile=\"false\" minVersion=\"3\">Safari</device>
 <device mobile=\"false\" minVersion=\"6\">MSIE</device>
 <device mobile=\"false\" minVersion=\"1\">Chrome</device>
</devices>
在Java中,如果我们将输入指定为\“ Firefox \”,则输出应为mobile = false和minversion = 2。 如何使用Java从XML中获取此数据?     
已邀请:
您可以使用JAXB。首先,您需要从xml的创建者那里获得XSD(甚至DTD)。然后,您可以使用Java的xjc之类的工具来创建用于将XML字符串/文件解压缩为Java对象的类(和/或源代码)。 完成此操作后,就可以使用Java JAXB类从XML构建Java对象。举个简单的例子:
(MyObject)JAXBContext.newInstance(\"package.where.xjc.generated.the.classes\")
    .createUnmarshaller()
    .unmarshal(readerOrStreamOrFileOrURL);
查看此以获取更多信息。     
http://java.sun.com/developer/codesamples/xml.html#dom 查看示例。     
一种简单的方法是使用dom4j,我认为它比SAX更简单:http://dom4j.sourceforge.net/,但需要更多的内存。     
通常,它始终与解析XML连接。试试这个:http://www.ibm.com/developerworks/library/x-javaxpathapi.html 使用
XPathFactory
,您可以执行以下操作:
import java.util.*;
import java.lang.*;
import javax.xml.parsers.*;
import org.w3c.dom.*;
import javax.xml.xpath.*;

class Main
{
    public static void main (String[] args) throws java.lang.Exception
    {

        DocumentBuilderFactory domFactory = DocumentBuilderFactory.newInstance();
        domFactory.setNamespaceAware(true);
    DocumentBuilder builder = domFactory.newDocumentBuilder();
    Document doc = builder.parse(\"Devices.xml\");
    XPathFactory factory = XPathFactory.newInstance();
    XPath xpath = factory.newXPath();
    XPathExpression expr = xpath.compile(\"//devices/device[@mobile=\'false\' and @minVersion=\'2\']/text()\");
    Object result = expr.evaluate(doc, XPathConstants.NODESET);
    NodeList nodes = (NodeList) result; 
    for (int i = 0; i < nodes.getLength(); i++) {
        System.out.println(nodes.item(i).getNodeValue());
    } 


    }
}
输出:
Firefox
    
您将需要使用XML解析器。我推荐XOM。它使解析XML文件变得轻而易举。他们也有关于如何完成此操作的良好文档。 一个例子:
Document doc = new XmlBuilder().build(new File(\"path/to/file\"));
Element devicesElement = doc.getRootElement();
Elements deviceElements = devicesElement.getChildElements();

for (int i = 0; i < deviceElements.size(); i++) {
    Element curDevice = deviceElements.get(i);
    ....
}
    

要回复问题请先登录注册