Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.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 从httpservlet请求体读取的缩进xml?_Java_Xml_Dom_Indentation_Pretty Print - Fatal编程技术网

Java 从httpservlet请求体读取的缩进xml?

Java 从httpservlet请求体读取的缩进xml?,java,xml,dom,indentation,pretty-print,Java,Xml,Dom,Indentation,Pretty Print,我正在尝试从HttpServletRequest读取xml字符串,如下所示: private String getPayload(HttpServletRequest httRequest, String contentType){ StringBuilder buffer = new StringBuilder(); String data = null, payload = null; BufferedReader bufferedReade

我正在尝试从HttpServletRequest读取xml字符串,如下所示:

private String getPayload(HttpServletRequest httRequest, String contentType){

        StringBuilder buffer = new StringBuilder();
        String data = null, payload = null;
        BufferedReader bufferedReader = null;
        try {   
            bufferedReader = httRequest.getReader();
            String line;
            while ((line = bufferedReader.readLine()) != null) {
                buffer.append(line);
            }
            data = buffer.toString();
        } catch (IOException e) {
            e.printStackTrace();
        }
        System.out.println("Payload data: " + data);
}
这给了我一个字符串,如:

<?xml version="1.0" encoding="UTF-8"?><sgn>   <nev>      <rep>         <cin rn="cin227">            <ty>4</ty>            <ri>R241</ri>            <pi>R7</pi>            <ct>2016-10-27T18:23:49</ct>            <lt>2016-10-27T18:23:49</lt>            <et>2016-11-27T18:23:49</et>            <at>erer</at>            <aa>name</aa>            <st>17</st>            <cs>88</cs>            <con>Sid-Container-Element</con>         </cin>      </rep>      <net>3</net>   </nev>   <sur>R7/R8</sur>   <cr>C1</cr></sgn>
4 R241 R7 2016-10-27T18:23:49 2016-10-27T18:23:49 2016-11-27T18:23:49 erer名称1788 Sid容器元件3 R7/R8 C1
所以它没有缩进。我尝试了几种方法来缩进它,比如:

XPathFactory xpathFactory = XPathFactory.newInstance();
// XPath to find empty text nodes.
XPathExpression xpathExp = xpathFactory.newXPath().compile(
        "//text()[normalize-space(.) = '']");  
NodeList emptyTextNodes = (NodeList) 
        xpathExp.evaluate(doc, XPathConstants.NODESET);

// Remove each empty text node from document.
for (int i = 0; i < emptyTextNodes.getLength(); i++) {
    Node emptyTextNode = emptyTextNodes.item(i);
    emptyTextNode.getParentNode().removeChild(emptyTextNode);
}

Transformer transformer = TransformerFactory.newInstance().newTransformer();
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "2");
//initialize StreamResult with File object to save to file
StreamResult result = new StreamResult(new StringWriter());
DOMSource source = new DOMSource(doc);
transformer.transform(source, result);
String xmlString = result.getWriter().toString();
System.out.println(xmlString);
XPathFactory XPathFactory=XPathFactory.newInstance();
//XPath查找空文本节点。
XPathExpression XPathXP=xpathFactory.newXPath().compile(
“//text()[normalize space(.)=“”]”;
节点列表emptyTextNodes=(节点列表)
evaluate(doc,XPathConstants.NODESET);
//从文档中删除每个空文本节点。
对于(int i=0;i
因此,首先使用xpath删除空白,然后应用transformer。所以这仍然不能给我正确的输出:

<?xml version="1.0" encoding="UTF-8"?><sgn >
<nev>
<rep>
<cin rn="cin227">
<ty>4</ty>
<ri>R241</ri>
<pi>R7</pi>
<ct>2016-10-27T18:23:49</ct>
<lt>2016-10-27T18:23:49</lt>
<et>2016-11-27T18:23:49</et>
<at>erer</at>
<aa>name</aa>
<st>17</st>
<cs>88</cs>
<con>Sid-Container-Element</con>
</cin>
</rep>
<net>3</net>
</nev>
<sur>R7/R8</sur>
<cr>C1</cr>
</sgn>

4.
R241
R7
2016-10-27T18:23:49
2016-10-27T18:23:49
2016-11-27T18:23:49
埃勒
名称
17
88
Sid容器元素
3.
R7/R8
C1
所以它没有正确地缩进它。我想要适当的缩进


我在这里做错了什么吗?

可能是@abbath的复制品:我已经尝试了上面问题的答案。但是输出不是预期的(在我的问题中提供了示例)是的,这就是我使用的。我需要在服务器日志中读取我的xml,以确保其格式正确,以便客户端获得正确的输入。也许你碰到了图书馆里的一些错误,比如。你的版本是什么?可能是@abbath的副本:我已经尝试了上面问题的答案。但是输出不是预期的(在我的问题中提供了示例)是的,这就是我使用的。我需要在服务器日志中读取我的xml,以确保其格式正确,以便客户端获得正确的输入。也许你碰到了图书馆里的一些错误,比如。你的说法是什么?