Java 如何以更简单的方式从XML文件中获取单个属性
我正在尝试将XML文件发送到我的一个Servlet类,我能够做到这一点。下面是我的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 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() {
}
};