我正在从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)。可惜我不知道如何快速制作出这样的东西