Класс
XML
не предоставляет методов для исключения тегов. Одно из возможных решений - обновить строку, чтобы удалить теги, как показано ниже,
например, чтобы исключить type
тег,
String splits[] = xmlString.split("(<\\/type>|<type>)");
xmlString = splits[0]+splits[2];
JSONObject jsonObject = XML.toJSONObject(xmlString);
System.out.println(jsonObject);
Вывод:
{"пользователей ": {" report ": {" sub ":" eng "," score ": 30}," user ": {" name ":" test1 "," age ": 20}}}
Чтобы удалить элемент имени из пользовательского тега,
String xmlString = "<users><user name=test1 age=20></user><type><direct num=3></direct></type><report sub=eng score=30></report></users>";
//split by user tags
String splits[] = xmlString.split("(<\\/user>|<user )");
//remove name filed and combine other elements
String user1 = Arrays.stream(splits[1].split(" "))
.filter(s->!s.contains("name"))
.collect(Collectors.joining(" "));
//merge strings and user tag
xmlString = splits[0] + "<user " + user1 + "</user>" + splits[2];
JSONObject jsonObject = XML.toJSONObject(xmlString);
Вывод ::
{
"users": {
"report": {
"sub": "eng",
"score": 30
},
"type": {
"direct": {
"num": 3
}
},
"user": {
"age": 20
}
}
}
ОБНОВЛЕНИЕ: Лучшим решением было бы удалить из JsonObject
,
jsonObject.getJSONObject("users").getJSONObject("user").remove("name")