gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 04:57:45 25 4
gpt4 key购买 nike

我正在从数据库中检索 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

我知道有很多方法可以格式化字符串和字符,但我似乎无法集中注意力如何有效地使用它们来获得我想要的结果。我不需要格式化你看到的字符串......

任何帮助将不胜感激!提前致谢。

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

我现在明白了,我真正要做的就是在每个结束标记后添加一个换行符。但问题仍然是......如何?

最佳答案

有 2 个通用 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 被忽略格式),但我希望您能了解大致情况

编辑:可能有一种更短、更奇特的方法可以使用 XSLT 转换将 XML 转换为 HTML(这是您想要的 xml)。太糟糕了,我不知道如何足够快地制作出这样的东西

关于java - 使用 Java 方法格式化 HTML 页面上的文本/XML 输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7993747/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com