1

我正在尝试将 XML 文件发送到我的 Servlet 类之一,并且我能够做到这一点。下面是我的 XML 文件-

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<request id="a487bd863c3e4513a7893966f8e186f1">
<app hash="sha1"/>
</request>

以下是我Servlet doPost需要解析 XML 文件并id and hash value从该 XML 文件中获取的方法。

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        String line;
        BufferedReader br = new BufferedReader(request.getReader());
        while ((line = br.readLine()) != null) {
            System.out.println(line);
            // now here parse the line and get `id and hash value`
            // from it.
        }
    }

我在想从那个 XML 文件中获取 id 和哈希值的最佳方法是什么。我知道一种方法是解析 XML 文件并获取 id 和哈希值。有什么简单或直接的方法可以得到我要找的东西吗?

任何简单的例子都将不胜感激。

4

2 回答 2

2

试试XPath

    XPathFactory xPathFactory = XPathFactory.newInstance();
    XPath xPath = xPathFactory.newXPath();
    String id = xPath.evaluate("/request/@id",
            new InputSource(request.getInputStream()));     

如果你需要 id 和 hash 然后

    InputStream is = request.getInputStream();
    Document doc = DocumentBuilderFactory.newInstance()
            .newDocumentBuilder().parse(is);
    String id = ((Element) doc.getElementsByTagName("request").item(0))
            .getAttribute("id");
    String hash = ((Element) doc.getElementsByTagName("app").item(0))
            .getAttribute("hash");      

由于解析器关闭InpuStream,我们需要防止它

    InputStream is = new BufferedInputStream(request.getInputStream()) {
        public void close() {
        }
    };
于 2013-07-02T04:44:28.510 回答
1

您可以使用sax 解析器dom 解析器来解析 xml 文件。

于 2013-07-02T05:11:03.513 回答