Skip to content

Commit 0f8ed92

Browse files
committed
Improve U.fromXml(string) and U.toXml(map) methods.
1 parent 505d0b5 commit 0f8ed92

File tree

2 files changed

+17
-28
lines changed

2 files changed

+17
-28
lines changed

src/main/java/com/github/underscore/lodash/Xml.java

Lines changed: 6 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -171,13 +171,7 @@ private static void writeXml(Collection collection, XmlStringBuilder builder, St
171171
.append("<" + (name == null ? ELEMENT_TEXT : XmlValue.escapeName(name, namespaces)) + ">"
172172
+ NULL + "</" + (name == null ? ELEMENT_TEXT : XmlValue.escapeName(name, namespaces)) + ">");
173173
} else {
174-
if (value instanceof Map && ((Map) value).size() == 1
175-
&& (String.valueOf(((Map.Entry) ((Map) value).entrySet().iterator()
176-
.next()).getKey()).startsWith(TEXT)
177-
|| String.valueOf(((Map.Entry) ((Map) value).entrySet().iterator()
178-
.next()).getKey()).startsWith(COMMENT)
179-
|| String.valueOf(((Map.Entry) ((Map) value).entrySet().iterator()
180-
.next()).getKey()).startsWith(CDATA))) {
174+
if (value instanceof Map && ((Map) value).size() == 1) {
181175
XmlObject.writeXml((Map) value, null, builder, localParentTextFound, namespaces);
182176
if (String.valueOf(((Map.Entry) ((Map) value).entrySet().iterator()
183177
.next()).getKey()).startsWith(TEXT)) {
@@ -778,17 +772,12 @@ private static void addText(final Map<String, Object> map, final String name, fi
778772
final int index = objects.size();
779773
while (true) {
780774
final Map.Entry lastElement = (Map.Entry) map.entrySet().toArray()[lastIndex];
781-
if (String.valueOf(lastElement.getKey()).startsWith(TEXT)
782-
|| String.valueOf(lastElement.getKey()).startsWith(COMMENT)
783-
|| String.valueOf(lastElement.getKey()).startsWith(CDATA)) {
784-
final Map<String, Object> text = U.newLinkedHashMap();
785-
text.put(String.valueOf(lastElement.getKey()), map.remove(lastElement.getKey()));
786-
objects.add(index, text);
787-
} else {
788-
if (name.equals(String.valueOf(lastElement.getKey()))) {
789-
break;
790-
}
775+
if (name.equals(String.valueOf(lastElement.getKey()))) {
776+
break;
791777
}
778+
final Map<String, Object> text = U.newLinkedHashMap();
779+
text.put(String.valueOf(lastElement.getKey()), map.remove(lastElement.getKey()));
780+
objects.add(index, text);
792781
lastIndex -= 1;
793782
}
794783
objects.add(getValue(value));

src/test/java/com/github/underscore/lodash/StringTest.java

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1506,12 +1506,14 @@ public void toJsonFromXml11() {
15061506
+ " \"#comment\": \"d\"\n"
15071507
+ " },\n"
15081508
+ " {\n"
1509+
+ " \"e\": {\n"
1510+
+ " }\n"
1511+
+ " },\n"
1512+
+ " {\n"
15091513
+ " \"#comment1\": \"d\"\n"
15101514
+ " },\n"
15111515
+ " \"c\"\n"
15121516
+ " ],\n"
1513-
+ " \"e\": {\n"
1514-
+ " },\n"
15151517
+ " \"#comment\": \"d\"\n"
15161518
+ " }\n"
15171519
+ "}",
@@ -1910,15 +1912,13 @@ public void toXmlFromJson18() {
19101912
+ " }\n"
19111913
+ "}";
19121914
assertEquals("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
1913-
+ "<a>\n"
1914-
+ " <b></b>\n"
1915-
+ " <!--c-->\n"
1916-
+ "1\n"
1917-
+ " <![CDATA[2]]>\n"
1918-
+ " <b>\n"
1919-
+ " <a>1</a>\n"
1920-
+ " </b>\n"
1921-
+ "</a>",
1915+
+ "<a>\n"
1916+
+ " <b></b>\n"
1917+
+ " <!--c-->\n"
1918+
+ "1\n"
1919+
+ " <![CDATA[2]]>\n"
1920+
+ " <a>1</a>\n"
1921+
+ "</a>",
19221922
U.toXml((Map<String, Object>) U.fromJson(json)));
19231923
}
19241924

0 commit comments

Comments
 (0)