如何在Java中美化XML字符串

13 浏览
0 Comments

如何在Java中美化XML字符串

我有一个格式不正确的XML字符串。我想使用Java进行正确的缩进。关于这个问题,Stack Overflow上有很多答案。其中最广泛接受和出色的答案是这个:在Java 8中漂亮打印XML

但是这个答案的问题是,代码总是需要一个根元素,而我的字符串中有以下XML标签:


New York
Ottawa

如你所见,这里没有根元素,只有多个person标签。

我尝试查看上述答案中使用的库是否有可用的方法,但没有结果。

我不知道是否有解决办法。但如果有人能想到一些方法,我会非常感激。

附言:在将此问题标记为重复之前,请务必阅读问题。我知道在Stack Overflow上有类似的问题,但我的问题是非常不同的。

0
0 Comments

问题的出现原因是内存管理不足,解决方法是使用文件操作技术,不需要一次性加载整个文件。可以使用FileInputStream和FileOutputStream创建一个临时副本文件,并添加根打开和关闭元素。然后可以使用XMLStreamReader逐个处理<person>标签。

如果字符串不是从文件中获取的,可以将其转储到临时文件中,然后按照上述方法进行处理。

实际上,数据并不来自文件,而是来自数据库,并在数据库中作为连接字符串返回。我知道这很奇怪,但这就是应用程序的意图。

0
0 Comments

如何在Java中美化XML字符串

有时候我们需要将XML字符串进行美化,使其更易读。下面是一种实现方法:

我们可以使用字符串操作来实现。假设我们有一个名为xml的字符串,其中包含以下结构:


New York
Ottawa

首先,我们需要添加一个根元素:

xml = "" + xml + "";

这将给我们的结构添加了一个根元素,变成了:



New York
Ottawa

这是一个有效的XML文档,我们可以使用下面的方法来进行美化:

// 使用美化方法对xml进行美化
xml = beautify(xml);

美化后的结果如下:


    
        
New York
Ottawa

最后,我们可以使用简单的字符串替换来移除根元素:

xml = xml.replaceAll("<\\/?myDummyRoot>", "");

这样,我们就得到了一个可读的XML文档(虽然有一些额外的空格缩进)。

事实上,我们可以将xml分成多个chunk,每次处理1000个元素,然后再进行美化。这样可以提高效率。具体做法如下:

// 将xml分成多个chunk
List chunks = splitIntoChunks(xml, 1000);
// 对每个chunk进行美化
for (String chunk : chunks) {
    chunk = beautify(chunk);
    // ...
}

以上就是如何在Java中美化XML字符串的方法。希望对你有所帮助!

0