从生成的XML文件中剥离标记

时间:2013-08-30 14:41:06

标签: java xml xslt

我有一个Java类,它返回特定系统的状态,然后返回一个新的ResponseEntity并从中生成一个XML文件。我想从文件中删除XML标记并仅显示内容。

爪哇:

 @RequestMapping(method = RequestMethod.GET) 
    public ResponseEntity<StatusData> getStatus() throws IOException {
        StatusData status = new StatusData();   
        status.setIsDbUp(statusService.isDbUp());
        status.setIsAppUp(statusService.isAppUp());
        return new ResponseEntity<StatusData>(status, HttpStatus.OK);
    }

生成的XML:

   <com.ck.app.StatusData>
       <isDbUp>DB: UP</isDbUp>
       <isAppUp>APP: UP</isAppUp>
   </com.ck.app.StatusData>

我写了一个XSL脚本但不确定如何应用它。

4 个答案:

答案 0 :(得分:0)

查看此示例,了解如何从Java中运行XSLt:http://docs.oracle.com/javase/tutorial/jaxp/xslt/transformingXML.html

答案 1 :(得分:0)

我之前使用过jsoup用html来做这个,我相信它也适用于你的xml

http://jsoup.org

这是一个例子

jsoup - strip all formatting and link tags, keep text only

答案 2 :(得分:0)

答案 3 :(得分:0)

您可以重复DOM树节点并打印文本节点。

public static void main(String[] args) throws IOException, ParseException, JAXBException, URISyntaxException, NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException, SQLException, NoSuchMethodException, SAXException, ParserConfigurationException {
    DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
    Document doc = builder.parse(Main.class.getResourceAsStream("/file.xml"));

    visit(doc);
}

public static void visit(Node node) {
    NodeList nl = node.getChildNodes();

    for (int i = 0; i < nl.getLength(); i++) {

        Node child = nl.item(i);
        if (child.getNodeType() == Node.TEXT_NODE)
            System.out.println(child.getTextContent());

        visit(child);
    }
}