gpt4 book ai didi

java - 使用 java 从 XML 元素中删除空格

转载 作者:数据小太阳 更新时间:2023-10-29 02:08:10 26 4
gpt4 key购买 nike

我有一个 JSON 如下

String str = {'Emp name' : 'JSON','Emp id' : 1,'Salary' : 20997.00}

我想使用 java 将此 JSON 转换为 XML。我的 java 代码在这里。

JSON json= JSONSerializer.toJSON(str);
XMLSerializer xmlSerializer = new XMLSerializer();

//To Skip the white space from XML data and not from XML Element (By default it does)
xmlSerializer.setSkipWhitespace(true);
//To set type of xml element If it true, it will be type
xmlSerializer.setTypeHintsCompatibility(true);
xmlSerializer.setRootName("book");
String xml = xmlSerializer.write( json );
System.out.println(xml);

如果我在 XML 元素之间没有任何空格的情况下传递 xml(即 Emp 名称作为 Empname,Emp id 作为 Empid),我会得到一个输出。我想从 XML 元素而不是 XML 元素内容中删除空格。

最佳答案

我反编译并检查了 json-lib(2.4) 和 xom (1.2.5) 库。不幸的是,没有这样的关于 key 的预/后处理器或处理程序。这在构建 JSON 或构建 XML 时同样适用。

似乎没有其他方法可以手动修复 JSON 的键。所以请检查以下代码段:

public static void main(String[] args) {

String str = "{'Emp name' : 'JSON','Emp id' : 1,'Salary' : 20997.00, " +
"'manager' : {'first name':'hasan', 'last name' : 'kahraman'}," +
"'co workers': [{'first name':'john', 'last name' : 'wick'}, " +
"{'first name':'albert', 'last name' : 'smith'}]}";

JsonConfig config = new JsonConfig();
JSON json = JSONSerializer.toJSON(str, config);

fixJsonKey(json);

XMLSerializer xmlSerializer = new XMLSerializer();
//To Skip the white space from XML data and not from XML Element (By default it does)
xmlSerializer.setSkipWhitespace(true);
//To set type of xml element If it true, it will be type
xmlSerializer.setTypeHintsCompatibility(true);
xmlSerializer.setRootName("book");

String xml = xmlSerializer.write(json);
System.out.println(xml);
}

private static void fixJsonKey(Object json) {

if (json instanceof JSONObject) {
JSONObject jsonObject = (JSONObject) json;
List<String> keyList = new LinkedList<String>(jsonObject.keySet());
for (String key : keyList) {
if (!key.matches(".*[\\s\t\n]+.*")) {
Object value = jsonObject.get(key);
fixJsonKey(value);
continue;
}

Object value = jsonObject.remove(key);
String newKey = key.replaceAll("[\\s\t\n]", "");

fixJsonKey(value);

jsonObject.accumulate(newKey, value);
}
} else if (json instanceof JSONArray) {
for (Object aJsonArray : (JSONArray) json) {
fixJsonKey(aJsonArray);
}
}
}

输出如下:

<?xml version="1.0" encoding="UTF-8"?>
<book>
<Empid type="number">1</Empid>
<Empname type="string">JSON</Empname>
<Salary type="number">20997.0</Salary>
<coworkers class="array">
<e class="object">
<firstname type="string">john</firstname>
<lastname type="string">wick</lastname>
</e>
<e class="object">
<firstname type="string">albert</firstname>
<lastname type="string">smith</lastname>
</e>
</coworkers>
<manager class="object">
<firstname type="string">hasan</firstname>
<lastname type="string">kahraman</lastname>
</manager>
</book>

关于java - 使用 java 从 XML 元素中删除空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30641966/

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