You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@juneau.apache.org by ja...@apache.org on 2016/09/10 19:15:23 UTC
incubator-juneau git commit: Standardize XML on _type attributes for
JSON and bean types.
Repository: incubator-juneau
Updated Branches:
refs/heads/master 46f0645bb -> a8d50ab1f
Standardize XML on _type attributes for JSON and bean types.
Project: http://git-wip-us.apache.org/repos/asf/incubator-juneau/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-juneau/commit/a8d50ab1
Tree: http://git-wip-us.apache.org/repos/asf/incubator-juneau/tree/a8d50ab1
Diff: http://git-wip-us.apache.org/repos/asf/incubator-juneau/diff/a8d50ab1
Branch: refs/heads/master
Commit: a8d50ab1f74482f08636ca56f9b27bffdb4af483
Parents: 46f0645
Author: jamesbognar <ja...@gmail.com>
Authored: Sat Sep 10 15:15:19 2016 -0400
Committer: jamesbognar <ja...@gmail.com>
Committed: Sat Sep 10 15:15:19 2016 -0400
----------------------------------------------------------------------
.../apache/juneau/internal/VersionRange.java | 1 -
.../java/org/apache/juneau/xml/XmlParser.java | 19 +++++++++++--------
.../apache/juneau/xml/XmlSchemaSerializer.java | 10 ++--------
.../org/apache/juneau/xml/XmlSerializer.java | 13 ++++---------
.../apache/juneau/html/CommonParserTest.java | 1 -
.../juneau/msgpack/MsgPackSerialzierTest.java | 3 ---
.../juneau/transforms/CalendarSwapTest.java | 2 +-
.../juneau/transforms/ReaderFilterTest.java | 2 +-
.../org/apache/juneau/xml/CommonParserTest.java | 20 ++++++++++----------
.../java/org/apache/juneau/xml/XmlTest.java | 8 ++++----
.../resources/xml/testComparisonWithJson.xml | 10 +++++-----
.../src/test/resources/xml/testNamespaces.xml | 10 +++++-----
12 files changed, 43 insertions(+), 56 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/a8d50ab1/juneau-core/src/main/java/org/apache/juneau/internal/VersionRange.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/internal/VersionRange.java b/juneau-core/src/main/java/org/apache/juneau/internal/VersionRange.java
index c89e038..e7dc46c 100644
--- a/juneau-core/src/main/java/org/apache/juneau/internal/VersionRange.java
+++ b/juneau-core/src/main/java/org/apache/juneau/internal/VersionRange.java
@@ -41,7 +41,6 @@ public class VersionRange {
int c = range.indexOf(',');
if (c > -1 && (c1 == '[' || c1 == '(') && (c2 == ']' || c2 == ')')) {
String v1 = range.substring(1, c), v2 = range.substring(c+1, range.length()-1);
- //System.err.println("v1=["+v1+"], v2=["+v2+"]");
minVersion = new Version(v1);
maxVersion = new Version(v2);
minExclusive = c1 == '(';
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/a8d50ab1/juneau-core/src/main/java/org/apache/juneau/xml/XmlParser.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/xml/XmlParser.java b/juneau-core/src/main/java/org/apache/juneau/xml/XmlParser.java
index f066c84..4b9b8f7 100644
--- a/juneau-core/src/main/java/org/apache/juneau/xml/XmlParser.java
+++ b/juneau-core/src/main/java/org/apache/juneau/xml/XmlParser.java
@@ -73,23 +73,26 @@ public class XmlParser extends ReaderParser {
BeanDictionary bd = (pMeta == null ? bc.getBeanDictionary() : pMeta.getBeanDictionary());
String wrapperAttr = (isRoot && session.isPreserveRootElement()) ? r.getName().getLocalPart() : null;
- String typeAttr = r.getAttributeValue(null, "type");
+ String typeAttr = r.getAttributeValue(null, bc.getBeanTypePropertyName());
int jsonType = getJsonType(typeAttr);
String b = r.getAttributeValue(session.getXsiNs(), "nil");
if (b == null)
b = r.getAttributeValue(null, "nil");
boolean isNull = b != null && b.equals("true");
+ String elementName = session.decodeString(r.getLocalName());
if (jsonType == 0) {
- String elementName = session.decodeString(r.getLocalName());
if (elementName == null || elementName.equals(currAttr))
jsonType = UNKNOWN;
- else
+ else {
+ typeAttr = elementName;
jsonType = getJsonType(elementName);
+ }
}
if (! sType.canCreateNewInstance(outer)) {
- String c = r.getAttributeValue(null, bc.getBeanTypePropertyName());
- if (c != null) {
- sType = eType = (ClassMeta<T>)bc.getClassMetaFromString(c);
+ if (bd.hasName(typeAttr)) {
+ sType = eType = (ClassMeta<T>)bd.getClassMeta(typeAttr);
+ } else if (bd.hasName(elementName)) {
+ sType = eType = (ClassMeta<T>)bd.getClassMeta(elementName);
}
}
Object o = null;
@@ -186,7 +189,7 @@ public class XmlParser extends ReaderParser {
for (int i = 0; i < r.getAttributeCount(); i++) {
String a = r.getAttributeLocalName(i);
// TODO - Need better handling of namespaces here.
- if (! (a.equals("type"))) {
+ if (! (a.equals(bc.getBeanTypePropertyName()))) {
K key = session.trim(convertAttrToType(session, m, a, keyType));
V value = session.trim(convertAttrToType(session, m, r.getAttributeValue(i), valueType));
setName(valueType, value, key);
@@ -374,7 +377,7 @@ public class XmlParser extends ReaderParser {
for (int i = 0; i < r.getAttributeCount(); i++) {
String key = session.decodeString(r.getAttributeLocalName(i));
String val = r.getAttributeValue(i);
- if (! key.equals("type"))
+ if (! key.equals(bc.getBeanTypePropertyName()))
m.put(key, val);
}
}
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/a8d50ab1/juneau-core/src/main/java/org/apache/juneau/xml/XmlSchemaSerializer.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/xml/XmlSchemaSerializer.java b/juneau-core/src/main/java/org/apache/juneau/xml/XmlSchemaSerializer.java
index 601e9e5..50dcfdc 100644
--- a/juneau-core/src/main/java/org/apache/juneau/xml/XmlSchemaSerializer.java
+++ b/juneau-core/src/main/java/org/apache/juneau/xml/XmlSchemaSerializer.java
@@ -354,7 +354,7 @@ public class XmlSchemaSerializer extends XmlSerializer {
if (session.isAddJsonTypeAttrs() || (session.isAddJsonStringTypeAttrs() && base.equals("string"))) {
w.cTag().nl();
w.oTag(i+3, "attribute")
- .attr("name", "type")
+ .attr("name", bc.getBeanTypePropertyName())
.attr("type", "string")
.ceTag().nl();
w.eTag(i+2, "extension").nl();
@@ -492,18 +492,12 @@ public class XmlSchemaSerializer extends XmlSerializer {
w.eTag(i+1, "sequence").nl();
}
- if (session.isAddBeanTypeProperties()) {
+ if (session.isAddBeanTypeProperties() || session.isAddJsonTypeAttrs()) {
w.oTag(i+1, "attribute")
.attr("name", bc.getBeanTypePropertyName())
.attr("type", "string")
.ceTag().nl();
}
- if (session.isAddJsonTypeAttrs()) {
- w.oTag(i+1, "attribute")
- .attr("name", "type")
- .attr("type", "string")
- .ceTag().nl();
- }
}
w.eTag(i, "complexType").nl();
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/a8d50ab1/juneau-core/src/main/java/org/apache/juneau/xml/XmlSerializer.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/xml/XmlSerializer.java b/juneau-core/src/main/java/org/apache/juneau/xml/XmlSerializer.java
index 32f618e..b3e6b83 100644
--- a/juneau-core/src/main/java/org/apache/juneau/xml/XmlSerializer.java
+++ b/juneau-core/src/main/java/org/apache/juneau/xml/XmlSerializer.java
@@ -343,9 +343,7 @@ public class XmlSerializer extends WriterSerializer {
String typeName = null;
if (session.isAddBeanTypeProperties()) {
if (o != null && ! eType.equals(aType))
- typeName = aType.toString();
- else if (o == null)
- typeName = eType.toString();
+ typeName = aType.getDictionaryName();
}
// char '\0' is interpreted as null.
@@ -372,12 +370,9 @@ public class XmlSerializer extends WriterSerializer {
else
ts = "string";
-
// Is there a name associated with this bean?
if (elementName == null)
elementName = sType.getDictionaryName();
- if (elementName == null)
- elementName = aType.getDictionaryName();
// If the value is null then it's either going to be <null/> or <XmlSerializer nil='true'/>
// depending on whether the element has a name.
@@ -427,9 +422,9 @@ public class XmlSerializer extends WriterSerializer {
if (xsiNs != null)
out.attr("xmlns", xsiNs.name, xsiNs.uri);
}
- if (elementName != null && session.isAddJsonTypeAttrs() && (session.isAddJsonStringTypeAttrs() || ! ts.equals("string")))
- out.attr(dns, "type", ts);
- if (typeName != null)
+ if (typeName == null && elementName != null && session.isAddJsonTypeAttrs() && (session.isAddJsonStringTypeAttrs() || ! ts.equals("string")))
+ typeName = ts;
+ if (typeName != null && ! typeName.equals(elementName))
out.attr(dns, bc.getBeanTypePropertyName(), typeName);
if (o == null) {
if (! isNullTag)
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/a8d50ab1/juneau-core/src/test/java/org/apache/juneau/html/CommonParserTest.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/test/java/org/apache/juneau/html/CommonParserTest.java b/juneau-core/src/test/java/org/apache/juneau/html/CommonParserTest.java
index ca1da18..abc948f 100755
--- a/juneau-core/src/test/java/org/apache/juneau/html/CommonParserTest.java
+++ b/juneau-core/src/test/java/org/apache/juneau/html/CommonParserTest.java
@@ -66,7 +66,6 @@ public class CommonParserTest {
t2.add(new A3("name1","value1"));
t1.list = t2;
in = new HtmlSerializer().setProperty(SERIALIZER_addBeanTypeProperties, true).serialize(t1);
- System.err.println(in);
t1 = (A1)p.parse(in, Object.class);
assertEquals("value1", t1.list.get(1).value);
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/a8d50ab1/juneau-core/src/test/java/org/apache/juneau/msgpack/MsgPackSerialzierTest.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/test/java/org/apache/juneau/msgpack/MsgPackSerialzierTest.java b/juneau-core/src/test/java/org/apache/juneau/msgpack/MsgPackSerialzierTest.java
index f90bced..450d7ee 100755
--- a/juneau-core/src/test/java/org/apache/juneau/msgpack/MsgPackSerialzierTest.java
+++ b/juneau-core/src/test/java/org/apache/juneau/msgpack/MsgPackSerialzierTest.java
@@ -201,9 +201,6 @@ public class MsgPackSerialzierTest {
test(new ObjectMap("{1:1}"), "81 A1 31 01");
test(new ObjectMap("{1:1,2:1,3:1,4:1,5:1,6:1,7:1,8:1,9:1,a:1,b:1,c:1,d:1,e:1,f:1}"), "8F A1 31 01 A1 32 01 A1 33 01 A1 34 01 A1 35 01 A1 36 01 A1 37 01 A1 38 01 A1 39 01 A1 61 01 A1 62 01 A1 63 01 A1 64 01 A1 65 01 A1 66 01");
test(new ObjectMap("{1:1,2:1,3:1,4:1,5:1,6:1,7:1,8:1,9:1,a:1,b:1,c:1,d:1,e:1,f:1,g:1}"), "DE 00 10 A1 31 01 A1 32 01 A1 33 01 A1 34 01 A1 35 01 A1 36 01 A1 37 01 A1 38 01 A1 39 01 A1 61 01 A1 62 01 A1 63 01 A1 64 01 A1 65 01 A1 66 01 A1 67 01");
-
- byte[] b = MsgPackSerializer.DEFAULT.serialize(new Person());
- System.err.println(TestUtils.toReadableBytes2(b));
}
public static class Person {
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/a8d50ab1/juneau-core/src/test/java/org/apache/juneau/transforms/CalendarSwapTest.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/test/java/org/apache/juneau/transforms/CalendarSwapTest.java b/juneau-core/src/test/java/org/apache/juneau/transforms/CalendarSwapTest.java
index df82751..e989d98 100755
--- a/juneau-core/src/test/java/org/apache/juneau/transforms/CalendarSwapTest.java
+++ b/juneau-core/src/test/java/org/apache/juneau/transforms/CalendarSwapTest.java
@@ -419,7 +419,7 @@ public class CalendarSwapTest {
Class<?> f = CalendarMapSwap.class;
WriterSerializer s = new XmlSerializer.SimpleXmlJsonSq().addPojoSwaps(f);
ReaderParser p = new XmlParser().addPojoSwaps(f);
- doTest(s, p, true, "<object><time type='number'>-2172116928000</time><timeZone>PST</timeZone></object>");
+ doTest(s, p, true, "<object><time _type='number'>-2172116928000</time><timeZone>PST</timeZone></object>");
}
//====================================================================================================
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/a8d50ab1/juneau-core/src/test/java/org/apache/juneau/transforms/ReaderFilterTest.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/test/java/org/apache/juneau/transforms/ReaderFilterTest.java b/juneau-core/src/test/java/org/apache/juneau/transforms/ReaderFilterTest.java
index 99dbf35..0398568 100755
--- a/juneau-core/src/test/java/org/apache/juneau/transforms/ReaderFilterTest.java
+++ b/juneau-core/src/test/java/org/apache/juneau/transforms/ReaderFilterTest.java
@@ -40,7 +40,7 @@ public class ReaderFilterTest {
assertEquals("{X:{foo:'bar',baz:'quz'}}", s.serialize(m));
s.addPojoSwaps(ReaderSwap.Xml.class);
- r = new StringReader("<object><foo type='string'>bar</foo><baz type='string'>quz</baz></object>");
+ r = new StringReader("<object><foo _type='string'>bar</foo><baz _type='string'>quz</baz></object>");
m = new HashMap<String,Object>();
m.put("X", r);
assertEquals("{X:{foo:'bar',baz:'quz'}}", s.serialize(m));
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/a8d50ab1/juneau-core/src/test/java/org/apache/juneau/xml/CommonParserTest.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/test/java/org/apache/juneau/xml/CommonParserTest.java b/juneau-core/src/test/java/org/apache/juneau/xml/CommonParserTest.java
index d9520e1..7081e83 100755
--- a/juneau-core/src/test/java/org/apache/juneau/xml/CommonParserTest.java
+++ b/juneau-core/src/test/java/org/apache/juneau/xml/CommonParserTest.java
@@ -32,20 +32,20 @@ public class CommonParserTest {
ReaderParser p = XmlParser.DEFAULT;
Map m = null;
- m = (Map)p.parse("<object><a type='number'>1</a></object>", Object.class);
+ m = (Map)p.parse("<object><a _type='number'>1</a></object>", Object.class);
assertEquals(1, m.get("a"));
- m = (Map)p.parse("<object><a type='number'>1</a><b type='string'>foo bar</b></object>", Object.class);
+ m = (Map)p.parse("<object><a _type='number'>1</a><b _type='string'>foo bar</b></object>", Object.class);
assertEquals(1, m.get("a"));
assertEquals("foo bar", m.get("b"));
- m = (Map)p.parse("<object><a type='number'>1</a><b type='string'>foo bar</b><c type='boolean'>false</c></object>", Object.class);
+ m = (Map)p.parse("<object><a _type='number'>1</a><b _type='string'>foo bar</b><c _type='boolean'>false</c></object>", Object.class);
assertEquals(1, m.get("a"));
assertEquals(false, m.get("c"));
- m = (Map)p.parse(" <object> <a type='number'> 1 </a> <b type='string'> foo </b> <c type='boolean'> false </c> </object> ", Object.class);
+ m = (Map)p.parse(" <object> <a _type='number'> 1 </a> <b _type='string'> foo </b> <c _type='boolean'> false </c> </object> ", Object.class);
assertEquals(1, m.get("a"));
assertEquals("foo", m.get("b"));
assertEquals(false, m.get("c"));
- m = (Map)p.parse("<object><x type='string'>org.apache.juneau.test.Person</x><addresses type='array'><object><x type='string'>org.apache.juneau.test.Address</x><city type='string'>city A</city><state type='string'>state A</state><street type='string'>street A</street><zip type='number'>12345</zip></object></addresses></object>", Object.class);
+ m = (Map)p.parse("<object><x _type='string'>org.apache.juneau.test.Person</x><addresses _type='array'><object><x _type='string'>org.apache.juneau.test.Address</x><city _type='string'>city A</city><state _type='string'>state A</state><street _type='string'>street A</street><zip _type='number'>12345</zip></object></addresses></object>", Object.class);
assertEquals("org.apache.juneau.test.Person", m.get("x"));
List l = (List)m.get("addresses");
assertNotNull(l);
@@ -57,12 +57,12 @@ public class CommonParserTest {
assertEquals("street A", m.get("street"));
assertEquals(12345, m.get("zip"));
- ObjectList jl = (ObjectList)p.parse("<array><object><attribute type='string'>value</attribute></object><object><attribute type='string'>value</attribute></object></array>", Object.class);
+ ObjectList jl = (ObjectList)p.parse("<array><object><attribute _type='string'>value</attribute></object><object><attribute _type='string'>value</attribute></object></array>", Object.class);
assertEquals("value", jl.getObjectMap(0).getString("attribute"));
assertEquals("value", jl.getObjectMap(1).getString("attribute"));
try {
- jl = (ObjectList)p.parse("<array><object><attribute type='string'>value</attribute></object><object><attribute type='string'>value</attribute></object></array>", Object.class);
+ jl = (ObjectList)p.parse("<array><object><attribute _type='string'>value</attribute></object><object><attribute _type='string'>value</attribute></object></array>", Object.class);
assertEquals("value", jl.getObjectMap(0).getString("attribute"));
assertEquals("value", jl.getObjectMap(1).getString("attribute"));
} catch (Exception e) {
@@ -112,7 +112,7 @@ public class CommonParserTest {
assertEquals(t.a, 1);
assertEquals(t.b, 2);
- in = "<object><a>1</a><unknown><object><a type='string'>foo</a></object></unknown><b>2</b></object>";
+ in = "<object><a>1</a><unknown><object><a _type='string'>foo</a></object></unknown><b>2</b></object>";
t = p.parse(in, B.class);
assertEquals(t.a, 1);
assertEquals(t.b, 2);
@@ -137,7 +137,7 @@ public class CommonParserTest {
ReaderParser p = XmlParser.DEFAULT;
- String in = "<object><ints type='array'><number>1</number><number>2</number><number>3</number></ints><beans type='array'><object><a type='number'>1</a><b type='number'>2</b></object></beans></object>";
+ String in = "<object><ints _type='array'><number>1</number><number>2</number><number>3</number></ints><beans _type='array'><object><a _type='number'>1</a><b _type='number'>2</b></object></beans></object>";
C t = p.parse(in, C.class);
assertEquals(t.getInts().size(), 3);
assertEquals(t.getBeans().get(0).b, 2);
@@ -170,7 +170,7 @@ public class CommonParserTest {
}
);
- String in = "<object><a type='number'>1</a><unknownProperty type='string'>foo</unknownProperty><b type='number'>2</b></object>";
+ String in = "<object><a _type='number'>1</a><unknownProperty _type='string'>foo</unknownProperty><b _type='number'>2</b></object>";
p.parse(in, B.class);
assertEquals(1, events.size());
// XML parser may or may not support line numbers.
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/a8d50ab1/juneau-core/src/test/java/org/apache/juneau/xml/XmlTest.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/test/java/org/apache/juneau/xml/XmlTest.java b/juneau-core/src/test/java/org/apache/juneau/xml/XmlTest.java
index 3c8b371..5272651 100755
--- a/juneau-core/src/test/java/org/apache/juneau/xml/XmlTest.java
+++ b/juneau-core/src/test/java/org/apache/juneau/xml/XmlTest.java
@@ -73,9 +73,9 @@ public class XmlTest {
@Test
public void testBeanNameAnnotation() throws Exception {
String e =
- "<Person1 type='object'>\n"
+ "<Person1 _type='object'>\n"
+ " <name>John Smith</name>\n"
- + " <age type='number'>123</age>\n"
+ + " <age _type='number'>123</age>\n"
+ "</Person1>\n";
String r = new XmlSerializer.SimpleXmlJsonSq().setProperty(SERIALIZER_useIndentation, true).serialize(new Person1("John Smith", 123));
assertEquals(e, r);
@@ -104,8 +104,8 @@ public class XmlTest {
@Test
public void testTrimNulls() throws Exception {
String e =
- "<Person1 type='object'>\n"
- + " <age type='number'>123</age>\n"
+ "<Person1 _type='object'>\n"
+ + " <age _type='number'>123</age>\n"
+ "</Person1>\n";
String r = new XmlSerializer.SimpleXmlJsonSq().setProperty(SERIALIZER_useIndentation, true).serialize(new Person1(null, 123));
assertEquals(e, r);
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/a8d50ab1/juneau-core/src/test/resources/xml/testComparisonWithJson.xml
----------------------------------------------------------------------
diff --git a/juneau-core/src/test/resources/xml/testComparisonWithJson.xml b/juneau-core/src/test/resources/xml/testComparisonWithJson.xml
index b79f07a..8994736 100755
--- a/juneau-core/src/test/resources/xml/testComparisonWithJson.xml
+++ b/juneau-core/src/test/resources/xml/testComparisonWithJson.xml
@@ -15,18 +15,18 @@
-->
<object>
<name>John Smith</name>
- <address type='object'>
+ <address _type='object'>
<streetAddress>21 2nd Street</streetAddress>
<city>New York</city>
<state>NY</state>
- <postalCode type='number'>10021</postalCode>
+ <postalCode _type='number'>10021</postalCode>
</address>
- <phoneNumbers type='array'>
+ <phoneNumbers _type='array'>
<string>212 555-1111</string>
<string>212 555-2222</string>
</phoneNumbers>
<additionalInfo nil='true'/>
- <remote type='boolean'>false</remote>
- <height type='number'>62.4</height>
+ <remote _type='boolean'>false</remote>
+ <height _type='number'>62.4</height>
<fico_x0020_score>_x0020_> 640</fico_x0020_score>
</object>
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/a8d50ab1/juneau-core/src/test/resources/xml/testNamespaces.xml
----------------------------------------------------------------------
diff --git a/juneau-core/src/test/resources/xml/testNamespaces.xml b/juneau-core/src/test/resources/xml/testNamespaces.xml
index b09313e..17026fb 100755
--- a/juneau-core/src/test/resources/xml/testNamespaces.xml
+++ b/juneau-core/src/test/resources/xml/testNamespaces.xml
@@ -15,18 +15,18 @@
-->
<object xmlns='http://www.ibm.com' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'>
<name>John Smith</name>
- <address type='object'>
+ <address _type='object'>
<streetAddress>21 2nd Street</streetAddress>
<city>New York</city>
<state>NY</state>
- <postalCode type='number'>10021</postalCode>
+ <postalCode _type='number'>10021</postalCode>
</address>
- <phoneNumbers type='array'>
+ <phoneNumbers _type='array'>
<string>212 555-1111</string>
<string>212 555-2222</string>
</phoneNumbers>
<additionalInfo xsi:nil='true'/>
- <remote type='boolean'>false</remote>
- <height type='number'>62.4</height>
+ <remote _type='boolean'>false</remote>
+ <height _type='number'>62.4</height>
<fico_x0020_score>_x0020_> 640</fico_x0020_score>
</object>