[Practicalxml-commits] SF.net SVN: practicalxml:[148] branches/dev-1.1/src
Brought to you by:
kdgregory
From: Auto-Generated S. C. M. <pra...@li...> - 2009-09-22 21:07:12
|
Revision: 148 http://practicalxml.svn.sourceforge.net/practicalxml/?rev=148&view=rev Author: kdgregory Date: 2009-09-22 21:07:06 +0000 (Tue, 22 Sep 2009) Log Message: ----------- support namespaces for JSON->XML Modified Paths: -------------- branches/dev-1.1/src/main/java/net/sf/practicalxml/converter/json/Json2XmlConverter.java branches/dev-1.1/src/test/java/net/sf/practicalxml/converter/json/TestJson2XmlConverter.java Modified: branches/dev-1.1/src/main/java/net/sf/practicalxml/converter/json/Json2XmlConverter.java =================================================================== --- branches/dev-1.1/src/main/java/net/sf/practicalxml/converter/json/Json2XmlConverter.java 2009-09-22 20:01:27 UTC (rev 147) +++ branches/dev-1.1/src/main/java/net/sf/practicalxml/converter/json/Json2XmlConverter.java 2009-09-22 21:07:06 UTC (rev 148) @@ -61,7 +61,30 @@ */ public Element convert() { - Element root = DomUtil.newDocument("data"); + return convert("data"); + } + + + /** + * Creates a new XML <code>Document</code> from the passed JSON string + * (which must contain an object definition and nothing else). The root + * element will have the given name, but no namespace. + */ + public Element convert(String localName) + { + return convert(null, localName); + } + + + /** + * Creates a new XML <code>Document</code> from the passed JSON string + * (which must contain an object definition and nothing else). The root + * element will have the given name and namespace, and all child elements + * will inherit the namespace (and prefix, if it exists). + */ + public Element convert(String nsUri, String qname) + { + Element root = DomUtil.newDocument(nsUri, qname); parse(root); return root; } @@ -155,7 +178,7 @@ while (true) { - Element child = DomUtil.appendChild(parent, childName); + Element child = appendChild(parent, childName); next = valueDispatch(next, child); if (atEndOfSequence(next, "]", true)) return; @@ -284,7 +307,7 @@ throw new ConversionException(commonExceptionText("invalid token")); try { - return DomUtil.appendChild(parent, name); + return DomUtil.appendChildInheritNamespace(parent, name); } catch (Exception e) { Modified: branches/dev-1.1/src/test/java/net/sf/practicalxml/converter/json/TestJson2XmlConverter.java =================================================================== --- branches/dev-1.1/src/test/java/net/sf/practicalxml/converter/json/TestJson2XmlConverter.java 2009-09-22 20:01:27 UTC (rev 147) +++ branches/dev-1.1/src/test/java/net/sf/practicalxml/converter/json/TestJson2XmlConverter.java 2009-09-22 21:07:06 UTC (rev 148) @@ -502,4 +502,28 @@ } } + + public void testConvertWithNamespace() throws Exception + { + String src = "{foo: {bar: 123}}"; + + Element root = new Json2XmlConverter(src).convert("urn:argle", "argle:bargle"); + assertEquals("urn:argle", root.getNamespaceURI()); + assertEquals("argle", root.getPrefix()); + assertEquals("bargle", root.getLocalName()); + assertEquals(1, root.getChildNodes().getLength()); + + Element child = (Element)root.getFirstChild(); + assertEquals("urn:argle", child.getNamespaceURI()); + assertEquals("argle", child.getPrefix()); + assertEquals("foo", child.getLocalName()); + assertEquals(1, root.getChildNodes().getLength()); + + Element grandchild = (Element)child.getFirstChild(); + assertEquals("urn:argle", grandchild.getNamespaceURI()); + assertEquals("argle", grandchild.getPrefix()); + assertEquals("bar", grandchild.getLocalName()); + assertEquals("123", DomUtil.getText(grandchild)); + assertEquals(0, DomUtil.getChildren(grandchild).size()); + } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |