1 29 30 package com.caucho.quercus.lib.simplexml; 31 32 import org.w3c.dom.NamedNodeMap ; 33 import org.w3c.dom.Node ; 34 import org.w3c.dom.NodeList ; 35 36 public class DOMNodeUtil { 38 39 public static StringBuilder asXML(Node node) 40 { 41 return asXMLVersion(node, "1.0"); 42 } 43 44 public static StringBuilder asXMLVersion(Node node, 45 String version) 46 { 47 StringBuilder result = new StringBuilder (); 48 49 result.append("<?xml version=\"").append(version).append("\"?>\n"); 50 generateXML(node, result); 51 52 return result; 53 } 54 55 public static StringBuilder asXMLVersionEncoding(Node node, 56 String version, 57 String encoding) 58 { 59 StringBuilder result = new StringBuilder (); 60 61 result.append("<?xml version=\"").append(version).append("\""); 62 63 if (!"".equals(encoding)) { 64 result.append(" encoding=\"").append(encoding).append("\""); 65 } 66 67 result.append("?>\n"); 68 generateXML(node, result); 69 70 return result; 71 } 72 73 77 public static StringBuilder generateXML(Node node, 78 StringBuilder sb) 79 { 80 if (node == null) 81 return sb; 82 83 if (node.getNodeType() == Node.TEXT_NODE) { 85 sb.append(node.getNodeValue()); 86 return sb; 87 } 88 89 sb.append("<"); 91 92 sb.append(node.getNodeName()); 93 94 NamedNodeMap attrs = node.getAttributes(); 96 int attrLength = attrs.getLength(); 97 98 for (int i=0; i < attrLength; i++) { 99 Node attribute = attrs.item(i); 100 sb.append(" ") 101 .append(attribute.getNodeName()) 102 .append("=\"") 103 .append(attribute.getNodeValue()) 104 .append("\""); 105 } 106 107 NodeList children = node.getChildNodes(); 109 int nodeLength = children.getLength(); 110 111 if (nodeLength == 0) { 112 sb.append(" />"); 113 return sb; 114 } 115 116 sb.append(">"); 117 118 for (int i=0; i < nodeLength; i++) { 120 Node child = children.item(i); 121 122 if (child.getNodeType() == Node.TEXT_NODE) { 123 sb.append(child.getNodeValue()); 124 continue; 125 } 126 generateXML(child, sb); 127 } 128 129 sb.append("</").append(node.getNodeName()).append(">"); 131 132 return sb; 133 } 134 } 135 | Popular Tags |