public void testNestedProperties() { String xml = "<?xml version=\"1.0\"?>"; xml += "<inspection-result xmlns=\"http://www.metawidget.org/inspection-result\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.metawidget.org/inspection-result ../../inspector/inspection-result-1.0.xsd\" version=\"1.0\">"; xml += "<entity type=\"Foo\">"; xml += "<property name=\"a\"/>"; xml += "<property name=\"b\"/>"; xml += "<property name=\"c\">"; xml += "\t<property name=\"c1\"/>"; xml += "\t<property name=\"c2\"/>"; xml += "\t<property name=\"c3\" type=\"C3-Type\">"; xml += "\t\t<property name=\"c31\"/>"; xml += "\t\t<property name=\"c32\"/>"; xml += "\t</property>"; xml += "</property>"; xml += "</entity>"; xml += "</inspection-result>"; // Without 'type' attribute Inspector inspector = new XmlInspector( new XmlInspectorConfig().setInputStream(new ByteArrayInputStream(xml.getBytes()))); Document document = XmlUtils.documentFromString(inspector.inspect(null, "Foo", "c")); Element entity = (Element) document.getDocumentElement().getFirstChild(); assertEquals(ENTITY, entity.getNodeName()); assertEquals("c", entity.getAttribute(NAME)); assertEquals("", entity.getAttribute(TYPE)); assertEquals(2, entity.getAttributes().getLength()); Element property = (Element) entity.getFirstChild(); assertEquals(PROPERTY, property.getNodeName()); assertEquals("c1", property.getAttribute(NAME)); assertEquals(1, property.getAttributes().getLength()); property = (Element) property.getNextSibling(); assertEquals(PROPERTY, property.getNodeName()); assertEquals("c2", property.getAttribute(NAME)); assertEquals(1, property.getAttributes().getLength()); property = (Element) property.getNextSibling(); assertEquals(PROPERTY, property.getNodeName()); assertEquals("c3", property.getAttribute(NAME)); assertEquals("C3-Type", property.getAttribute(TYPE)); assertEquals(2, property.getAttributes().getLength()); assertEquals(3, entity.getChildNodes().getLength()); // With 'type' attribute inspector = new XmlInspector( new XmlInspectorConfig().setInputStream(new ByteArrayInputStream(xml.getBytes()))); document = XmlUtils.documentFromString(inspector.inspect(null, "Foo", "c", "c3")); entity = (Element) document.getDocumentElement().getFirstChild(); assertEquals(ENTITY, entity.getNodeName()); assertEquals("c3", entity.getAttribute(NAME)); assertEquals("C3-Type", entity.getAttribute(TYPE)); assertEquals(2, entity.getAttributes().getLength()); property = (Element) entity.getFirstChild(); assertEquals(PROPERTY, property.getNodeName()); assertEquals("c31", property.getAttribute(NAME)); assertEquals(1, property.getAttributes().getLength()); property = (Element) property.getNextSibling(); assertEquals(PROPERTY, property.getNodeName()); assertEquals("c32", property.getAttribute(NAME)); assertEquals(1, property.getAttributes().getLength()); assertEquals(2, entity.getChildNodes().getLength()); }