2015-04-14 13 views
0

Это печатает мой XML-документ на консоли с довольно печатным.как вернуть файл с последовательным XML (документ XOM), чтобы я мог отображать его в браузере?

//writing output to a file  
Document writeDocument = new Document(document); 
//Formatting the file 
Serializer serializer = new Serializer(System.out, "UTF-8"); 
serializer.setIndent(4); 
serializer.write(writeDocument); 

Мне нужно вернуть один и тот же документ xml, чтобы я мог отображать его в браузере.

ответ

0

У меня было то же требование в одном из моих приложений. Вы можете сделать это, взяв сериализованный документ XOM, обернув его в теги кода и избегая угловых скобок. В приведенном ниже примере показан один из способов:

 public String getHTMLDoc(Document document) { 
     try { 
      // create a new div to hold your document 
      StringBuilder sb = new StringBuilder("<div id=\"xom\" style=\"font-family: 'Courier New', monospace; white-space: pre-wrap\"><pre>\n"); 
      // Create an array of strings with one string for each line in the document 
      ByteArrayOutputStream bout = new ByteArrayOutputStream(); 
      Serializer writer = new Serializer(bout, "UTF-8"); 
      writer.setIndent(4); 
      writer.write(document); 
      writer.flush(); 
      String xomString = bout.toString("UTF-8"); 
      String[] lines = xomString.split(writer.getLineSeparator()); 
      for (int i = 0; i < lines.length; i++) { 
       sb.append(convertLine(lines[i])); 
      } 
      sb.append("</pre></div>\n"); 
     } catch (IOException ex) { 
      // handle the error 
     } 
     return sb.toString(); 
    } 

    private String convertLine(String s) { 
     // wrap the line in a code tag 
     StringBuilder sb = new StringBuilder("<code>"); 
     // Remove trailing whitespace 
     Pattern trailingWhiteSpace = Pattern.compile("[ \t\n\f\r]+$"); 
     Matcher m = trailingWhiteSpace.matcher(s); 
     sb.append(m.replaceAll("")); 
     // Change all angle brackets "<" and ">" 
     sb.append(line.replaceAll(">", "&gt;").replaceAll("<", "&lt;")); 
     sb.append("</code>\n"); 
     return sb.toString(); 
    }