我使用JSONML将xml String转换为JSONObject。 这是我的xml String
"<soapenv:Body xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\"><jsonArray><jsonElement><message>entity is deleted<\/message><errorCode>ENTITY_IS_DELETED<\/errorCode><\/jsonElement><jsonElement><message>entity is deleted<\/message><errorCode>ENTITY_IS_DELETED<\/errorCode><\/jsonElement><\/jsonArray><\/soapenv:Body>"
当我尝试JSONML.toJSONObject()
它给了我
Caused by: org.json.JSONException: Bad character in a name at 32 [character 33 line 1]
at org.json.JSONTokener.syntaxError(JSONTokener.java:433)
at org.json.XMLTokener.nextToken(XMLTokener.java:288)
at org.json.JSONML.parse(JSONML.java:173)
at org.json.JSONML.toJSONObject(JSONML.java:286)
at org.json.JSONML.toJSONObject(JSONML.java:304)
at com.thbs.automaton.commonUtils.TestcaseUtils.compareXml(TestcaseUtils.java:144)
... 57 more
由于转义字符(\)。我尝试通过删除所有\字符来解决这个问题,这解决了我的问题。但是,我认为这不是一个好习惯。
有人能提出更好的方法吗?
答案 0 :(得分:1)
&#34; \&#34; s显示原始字符串不是&#34; XML字符串&#34;。它是一个&#34;转义的XML字符串&#34;。您应该找出XML String转义的原因和方式。
也许是因为转移为JSON。在这种情况下,您应该将原始(JSON)字符串转换为数据字符串,以便说出XML字符串。使用这样的代码
String xmlString = jsonParser(originalString, String.class);
之后运行
JSONML.toJSONObject(xmlString);