[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.
|