1919import org .w3c .dom .Document ;
2020import org .w3c .dom .DocumentType ;
2121import org .w3c .dom .Element ;
22+ import org .w3c .dom .NodeList ;
2223import org .w3c .dom .Text ;
2324
2425public class TestDOMModifications extends TestDOM {
@@ -84,11 +85,22 @@ public void test() throws Exception {
8485 Assert .assertEquals (docType1 , doc1 .getLastChild ());
8586 Assert .assertEquals (docType2 , doc2 .getFirstChild ());
8687 Assert .assertEquals (root2 , doc2 .getLastChild ());
87- doc2 .getChildNodes ();
88+ Assert .assertNull (root2 .getChildNodes ().item (0 ));
89+ Assert .assertNull (doc2 .getChildNodes ().item (-1 ));
8890 // add attribute
8991 root1 .setAttribute ("a1" , "v1" );
9092 root2 .setAttribute ("a1" , "v1" );
9193 checkDocument (doc1 , doc2 );
94+ Assert .assertNull (root2 .getAttributeNode ("a1" ).getChildNodes ().item (0 ));
95+ Assert .assertEquals (1 , root2 .getAttributes ().getLength ());
96+ Assert .assertEquals ("v1" , root2 .getAttributes ().getNamedItem ("a1" ).getNodeValue ());
97+ Assert .assertNull (root2 .getAttributes ().getNamedItem (null ));
98+ Assert .assertNull (root2 .getAttributes ().getNamedItem ("a2" ));
99+ Assert .assertEquals ("v1" , root2 .getAttributes ().item (0 ).getNodeValue ());
100+ Assert .assertNull (root2 .getAttributes ().item (-1 ));
101+ Assert .assertNull (root2 .getAttributes ().item (10 ));
102+ Assert .assertNull (root2 .getAttributeNode ("a1" ).getAttributes ().getNamedItem ("test" ));
103+ Assert .assertNull (root2 .getAttributeNode ("a1" ).getAttributes ().item (0 ));
92104 // add attribute
93105 root1 .setAttribute ("a2" , "v2" );
94106 root2 .setAttribute ("a2" , "v2" );
@@ -130,6 +142,9 @@ public void test() throws Exception {
130142 root1 .getAttributeNodeNS ("http://test3" , "b" ).setPrefix ("tutu" );
131143 root2 .getAttributeNodeNS ("http://test3" , "b" ).setPrefix ("tutu" );
132144 checkDocument (doc1 , doc2 );
145+ root1 .getAttributeNodeNS ("http://test3" , "b" ).setPrefix ("test3" );
146+ root2 .getAttributeNodeNS ("http://test3" , "b" ).setPrefix ("test3" );
147+ checkDocument (doc1 , doc2 );
133148 // change value
134149 root1 .getAttributeNodeNS ("http://test3" , "b" ).setValue ("BB" );
135150 root2 .getAttributeNodeNS ("http://test3" , "b" ).setValue ("BB" );
@@ -144,8 +159,8 @@ public void test() throws Exception {
144159 a .getSchemaTypeInfo ();
145160 a .setTextContent ("" );
146161 // change value
147- // TODO root2.setAttributeNodeNS(root2.getAttributeNodeNS("http://test3", "b").cloneNode(true));
148- // TODO checkDocument(doc1, doc2);
162+ root2 .setAttributeNodeNS (root2 .getAttributeNodeNS ("http://test3" , "b" ).cloneNode (true ));
163+ checkDocument (doc1 , doc2 );
149164 // remove attribute
150165 root1 .removeAttributeNode (root1 .getAttributeNodeNS ("http://test3" , "b" ));
151166 root2 .removeAttributeNode (root2 .getAttributeNodeNS ("http://test3" , "b" ));
@@ -246,6 +261,41 @@ public void test() throws Exception {
246261 root2Clone = root2 .cloneNode (false );
247262 checkElement (root1Clone , root2Clone );
248263 Assert .assertFalse (root2Clone .hasChildNodes ());
264+ // create element
265+ XMLElement e = doc2 .createElementNS ("http://hello" , "hello:world" );
266+ Assert .assertEquals ("http://hello" , e .getNamespaceURI ());
267+ Assert .assertEquals ("hello" , e .getPrefix ());
268+ Assert .assertEquals ("world" , e .getLocalName ());
269+
270+ e = doc2 .createElementNS (null , "empty" );
271+ Assert .assertEquals ("empty" , e .getNodeName ());
272+
273+ a = doc2 .createAttribute ("myId" );
274+ a .setValue ("myElement" );
275+ e .addAttribute (a );
276+ e .setIdAttribute ("myId" , true );
277+ root2 .appendChild (e );
278+
279+ e = doc2 .getElementById ("myElement" );
280+ Assert .assertNotNull (e );
281+ Assert .assertEquals ("empty" , e .getNodeName ());
282+ e = doc2 .getElementById ("myElement2" );
283+ Assert .assertNull (e );
284+
285+ NodeList nodes = doc2 .getElementsByTagName ("empty" );
286+ Assert .assertNotNull (nodes );
287+ Assert .assertEquals (1 , nodes .getLength ());
288+ e = (XMLElement )nodes .item (0 );
289+
290+ a = doc2 .createAttribute ("myId" );
291+ a .setValue ("myElement2" );
292+ e .setAttributeNodeNS (a );
293+ e .setIdAttributeNode (a , true );
294+ e = doc2 .getElementById ("myElement2" );
295+ Assert .assertNotNull (e );
296+ Assert .assertEquals ("empty" , e .getNodeName ());
297+ e = doc2 .getElementById ("myElement" );
298+ Assert .assertNull (e );
249299 }
250300
251301}
0 commit comments