1 16 package org.apache.commons.jxpath.ri.model.dom; 17 18 import junit.framework.Test; 19 import junit.framework.TestSuite; 20 21 import org.apache.commons.jxpath.AbstractFactory; 22 import org.apache.commons.jxpath.ri.model.XMLModelTestCase; 23 import org.apache.commons.jxpath.xml.DocumentContainer; 24 import org.w3c.dom.Attr ; 25 import org.w3c.dom.Document ; 26 import org.w3c.dom.Element ; 27 import org.w3c.dom.Node ; 28 import org.w3c.dom.NodeList ; 29 30 36 37 public class DOMModelTest extends XMLModelTestCase { 38 39 44 public DOMModelTest(String name) { 45 super(name); 46 } 47 48 51 public static Test suite() { 52 return (new TestSuite(DOMModelTest.class)); 53 } 54 55 protected String getModel() { 56 return DocumentContainer.MODEL_DOM; 57 } 58 59 protected AbstractFactory getAbstractFactory() { 60 return new TestDOMFactory(); 61 } 62 63 public void testGetNode() { 64 assertXPathNodeType(context, "/", Document .class); 65 assertXPathNodeType(context, "/vendor/location", Element .class); 66 assertXPathNodeType(context, "//location/@name", Attr .class); 67 } 68 69 protected String getXMLSignature( 70 Object node, 71 boolean elements, 72 boolean attributes, 73 boolean text, 74 boolean pi) 75 { 76 StringBuffer buffer = new StringBuffer (); 77 appendXMLSignature(buffer, node, elements, attributes, text, pi); 78 return buffer.toString(); 79 } 80 81 private void appendXMLSignature( 82 StringBuffer buffer, 83 Object object, 84 boolean elements, 85 boolean attributes, 86 boolean text, 87 boolean pi) 88 { 89 Node node = (Node ) object; 90 int type = node.getNodeType(); 91 switch (type) { 92 case Node.DOCUMENT_NODE : 93 buffer.append("<D>"); 94 appendXMLSignature( 95 buffer, 96 node.getChildNodes(), 97 elements, 98 attributes, 99 text, 100 pi); 101 buffer.append("</D"); 102 break; 103 104 case Node.ELEMENT_NODE : 105 String tag = elements ? ((Element ) node).getTagName() : "E"; 106 buffer.append("<"); 107 buffer.append(tag); 108 buffer.append(">"); 109 appendXMLSignature( 110 buffer, 111 node.getChildNodes(), 112 elements, 113 attributes, 114 text, 115 pi); 116 buffer.append("</"); 117 buffer.append(tag); 118 buffer.append(">"); 119 break; 120 121 case Node.TEXT_NODE : 122 case Node.CDATA_SECTION_NODE : 123 if (text) { 124 String string = node.getNodeValue(); 125 string = string.replace('\n', '='); 126 buffer.append(string); 127 } 128 break; 129 } 130 } 131 132 private void appendXMLSignature( 133 StringBuffer buffer, 134 NodeList children, 135 boolean elements, 136 boolean attributes, 137 boolean text, 138 boolean pi) 139 { 140 for (int i = 0; i < children.getLength(); i++) { 141 appendXMLSignature( 142 buffer, 143 children.item(i), 144 elements, 145 attributes, 146 text, 147 pi); 148 } 149 } 150 } | Popular Tags |