Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何以更简单的方式从XML文件中获取单个属性_Java_Xml_Parsing_Servlets - Fatal编程技术网

Java 如何以更简单的方式从XML文件中获取单个属性

Java 如何以更简单的方式从XML文件中获取单个属性,java,xml,parsing,servlets,Java,Xml,Parsing,Servlets,我正在尝试将XML文件发送到我的一个Servlet类,我能够做到这一点。下面是我的XML文件- <?xml version="1.0" encoding="UTF-8" standalone="no"?> <request id="a487bd863c3e4513a7893966f8e186f1"> <app hash="sha1"/> </request> 我在想,从XML文件中获取id和哈希值的最佳方法是什么。我知道一种方法是解析XML文件并

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

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<request id="a487bd863c3e4513a7893966f8e186f1">
<app hash="sha1"/>
</request>
我在想,从XML文件中获取id和哈希值的最佳方法是什么。我知道一种方法是解析XML文件并获取id和哈希值。有什么简单或直接的方法可以得到我想要的吗

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

试试看

如果您同时需要id和哈希,那么

    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");      
由于解析器关闭了bustream中的
,我们需要阻止它

    InputStream is = new BufferedInputStream(request.getInputStream()) {
        public void close() {
        }
    };

您可以使用或来解析xml文件。

检查谢谢Evgeniy的建议。那哈希呢?我还需要从XML中提取它。我正在关闭流,但您必须完全读取并在内存或磁盘中缓冲
请求.getInputStream()
,然后使用它。无法再次读取HTTP套接字上的请求流。@BimaleshJha,谢谢您的建议。你能提供一个简单的例子吗?@akirahin3检查这个代码段:ByteArrayOutputStream bytes=newbytearrayoutputstream()//在内存中,假设小数据IOUtils.copy(request.getInputStream,字节)//使用apache commons IOUtils//在XPath API的内存缓冲区中使用InputSource new InputSource(new ByteArrayInputStream(bytes.toByteArray());
    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");      
    InputStream is = new BufferedInputStream(request.getInputStream()) {
        public void close() {
        }
    };