使用Java方法格式化HTML页面上的文本/XML输出



我正在从XML格式的数据库中检索字符串值,字符串的示例:

<TXNURN>3505</TXNURN><CH></CH><REQ>N</REQ><DOB></DOB><QT>2</QT><DR>TAGER00</DR><NUMBER>N</NUMBER>

在网页中,它是这样显示的(因为XML标签在HTML页面中当然是不可见的):

3505N2TAGER00N

我想做的是创建一个java类/函数,它将接受字符串,并格式化它,使HTML页面上的输出看起来像这样:

TXNURN:     3505
CH:
REQ:        N
DOB:
QT:         2
DR:         TAGER00
NUMBER:     N

我知道有很多方法可以格式化字符串和字符,但我似乎就是不知道如何有效地使用它们来获得我想要的结果。我不需要格式化字符串,你看…

任何帮助都将非常感激!提前谢谢。

---------------------------------------------------------- 更新 ---------------------------------------------------------------

我现在看到,我所要做的就是在每个结束标签后面加一个换行符。但问题仍然存在……如何?

有两个常用的api用于处理JRE内置的XML - DOM和SAX。

这里有一个快速而肮脏的技巧,可以使用SAX完成您所请求的事情:

public class Main {
private final static String input = "<TXNURN>3505</TXNURN><CH></CH><REQ>N</REQ><DOB></DOB><QT>2</QT><DR>TAGER00</DR><NUMBER>N</NUMBER>";
public static void main(String[] args) throws Exception {
    SAXParser parser = SAXParserFactory.newInstance().newSAXParser();
    final StringBuilder output = new StringBuilder();
    parser.parse(new StringBufferInputStream("<root>"+input+"</root>"), new DefaultHandler() {
        @Override
        public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
            if ("root".equals(qName)) return;
            output.append(qName).append(":");
        }
        @Override
        public void endElement(String uri, String localName, String qName) throws SAXException {
            if ("root".equals(qName)) return;
            output.append("n");
        }
        @Override
        public void characters(char[] ch, int start, int length) throws SAXException {
            output.append(" ").append(ch, start, length);
        }
    });
    System.out.println(output.toString());
}

为了简洁起见,我使用了一种过时的(并且有很好的理由!)方法从字符串中获取输入流,并且您可能想要生成HTML(否则这将在一行中呈现为HTML忽略格式),但我希望您获得总体图片

edit:可能有一种更短、更花哨的方法,使用XSLT转换将XML转换为HTML(这是您想要的XML)。可惜我不知道如何快速制作出这样的东西

相关内容

  • 没有找到相关文章

最新更新