XML Utility

前端之家收集整理的这篇文章主要介绍了XML Utility前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
  1. packagesample;
  2.  
  3. importjava.io.BufferedReader;
  4. importjava.io.File;
  5. importjava.io.FileReader;
  6. importjava.io.IOException;
  7. importjava.io.OutputStream;
  8. importjava.io.StringReader;
  9. importjava.io.Writer;
  10.  
  11. importjavax.xml.parsers.DocumentBuilder;
  12. importjavax.xml.parsers.DocumentBuilderFactory;
  13. importjavax.xml.parsers.ParserConfigurationException;
  14. importjavax.xml.transform.OutputKeys;
  15. importjavax.xml.transform.Transformer;
  16. importjavax.xml.transform.TransformerException;
  17. importjavax.xml.transform.TransformerFactory;
  18. importjavax.xml.transform.dom.DOMResult;
  19. importjavax.xml.transform.dom.DOMSource;
  20. importjavax.xml.transform.stream.StreamResult;
  21. importjavax.xml.transform.stream.StreamSource;
  22.  
  23. importorg.w3c.dom.DOMException;
  24. importorg.w3c.dom.Document;
  25. importorg.w3c.dom.Element;
  26. importorg.w3c.dom.Node;
  27. importorg.w3c.dom.NodeList;
  28. importorg.xml.sax.InputSource;
  29. importorg.xml.sax.SAXException;
  30.  
  31. /**
  32. *XMLutilityclass.
  33. *
  34. *@author$Author:LihongGao$
  35. */
  36. publicfinalclassXMLUtil{
  37.  
  38. /**Hidedefaultconstructor*/
  39. privateXMLUtil(){
  40. }
  41.  
  42. /**
  43. *SelectssinglenodespecifiedbytheXPathexpression.
  44. *
  45. *@paramcurrent
  46. *XPathqueryrootnode
  47. *@paramxpath
  48. *XPathexpression
  49. *@returnSelectednode
  50. *@throwsAIUException
  51. *Indicatesmorethanonenodesareselected
  52. */
  53. publicstaticNodeselectSingleNode(Nodecurrent,Stringxpath)
  54. throwsException{
  55. //finalStringmethod="selectSingleNode(Node,String)";
  56.  
  57. NodeListlist=selectNodes(current,xpath);
  58. if(list==null||list.getLength()==0){
  59. returnnull;
  60. }elseif(list.getLength()==1){
  61. returnlist.item(0);
  62. }else{
  63. thrownewException("Morethanonenodesareselected");
  64. }
  65. }
  66.  
  67. /**
  68. *SelectslistofnodesspecifiedbytheXPathexpression.
  69. *
  70. *@paramcurrent
  71. *XPathqueryrootnode
  72. *@paramxpath
  73. *XPathexpression
  74. *@returnSelectednodelist
  75. *@throwsAIUException
  76. *IndicatesXMLtransformfailure
  77. */
  78. publicstaticNodeListselectNodes(Nodecurrent,Stringxpath)
  79. throwsException{
  80. //finalStringmethod="selectNodes(Node,String)";
  81.  
  82. if(currentinstanceofElement&&xpath.indexOf('/')==-1
  83. &&xpath.indexOf('[')==-1){
  84. return((Element)current).getElementsByTagName(xpath);
  85. }else{
  86. StringxltString="<?xmlversion=\"1.0\"encoding=\"utf-8\"?>"
  87. +"<xsl:stylesheetversion=\"1.0\"xmlns:xsl=\"http://www.w3.org/1999/XSL/Transform\">"
  88. +"<xsl:outputversion=\"1.0\"method=\"xml\"encoding=\"utf-8\"/>"
  89. +"<xsl:templatematch=\""+xpath+"\">"
  90. +"<xsl:copy-ofselect=\".\"/>"+"</xsl:template>"
  91. +"<xsl:templatematch=\"text()\"/>"+"</xsl:stylesheet>";
  92.  
  93. try{
  94. Elementresult=(Element)current.cloneNode(false);
  95. StreamSourcetemplate=newStreamSource(newStringReader(
  96. xltString));
  97.  
  98. TransformerFactorytransformerFactory=TransformerFactory
  99. .newInstance();
  100. Transformertransformer=transformerFactory
  101. .newTransformer(template);
  102. transformer.transform(newDOMSource(current),newDOMResult(
  103. result));
  104. returnresult.getChildNodes();
  105. }catch(TransformerExceptionex){
  106. thrownewException(ex.getMessage(),ex);
  107. }
  108. }
  109. }
  110.  
  111. /**
  112. *Retrievestextnodevaluesastextrecursively.
  113. *
  114. *@paramroot
  115. *Rootnode
  116. *@paramxpath
  117. *XPathexpression
  118. *@returnStringrepresentationoftextnodes
  119. *@throwsException
  120. *Indicatesmorethanonenodesareselected
  121. */
  122. publicstaticStringgetTextValue(Noderoot,Stringxpath)throwsException{
  123. StringBufferbuf=newStringBuffer();
  124.  
  125. Nodenode=selectSingleNode(root,xpath);
  126. if(node==null){
  127. returnnull;
  128. }
  129.  
  130. NodeListchildren=node.getChildNodes();
  131. for(inti=0;i<children.getLength();i++){
  132. Nodechild=children.item(i);
  133. if(child.getNodeType()==Node.TEXT_NODE){
  134. buf.append(child.getNodeValue());
  135. }
  136. }
  137.  
  138. returnbuf.toString();
  139. }
  140.  
  141. /**
  142. *Removesallelementsspecifiedbyelementname.
  143. *
  144. *@paramnode
  145. *Nodetomodify
  146. *@paramname
  147. *Elementname
  148. */
  149. publicstaticvoidremoveNode(Nodenode,Stringname){
  150. NodeListnodes=((Element)node).getElementsByTagName(name);
  151. if(nodes!=null){
  152. for(inti=0;i<nodes.getLength();i++){
  153. node.removeChild(nodes.item(i));
  154. }
  155. }
  156. }
  157.  
  158. /**
  159. *ExportsDOMnodetreetospecifiedoutputstream.
  160. *
  161. *@paramroot
  162. *Rootnode
  163. *@paramout
  164. *Outputwriter
  165. *@throwsException
  166. *IndicatesFailedtoexportnodes
  167. */
  168. publicstaticvoidexportNodes(Noderoot,Writerout)throwsException{
  169. exportNodes(root,newStreamResult(out));
  170. }
  171.  
  172. /**
  173. *ExportsDOMnodetreetospecifiedoutputstream.
  174. *
  175. *@paramroot
  176. *Rootnode
  177. *@paramout
  178. *Outputstream
  179. *@throwsException
  180. *IndicatesFailedtoexportnodes
  181. */
  182. publicstaticvoidexportNodes(Noderoot,OutputStreamout)
  183. throwsException{
  184. exportNodes(root,newStreamResult(out));
  185. }
  186.  
  187. /**
  188. *ExportsDOMnodetreetospecifiedoutputstream.
  189. *
  190. *@paramroot
  191. *Rootnode
  192. *@paramresult
  193. *Result
  194. *@throwsException
  195. *IndicatesFailedtoexportnodes
  196. */
  197. publicstaticvoidexportNodes(Noderoot,StreamResultresult)
  198. throwsException{
  199. //finalStringmethod="exportNodes(Node,OutputStream)";
  200. finalStringxltString="<?xmlversion=\"1.0\"encoding=\"Shift_JIS\"?>"
  201. +"<xsl:stylesheetversion=\"1.0\"xmlns:xsl=\"http://www.w3.org/1999/XSL/Transform\">"
  202. +"<xsl:outputmethod=\"xml\"version=\"1.0\"encoding=\"Shift_JIS\"omit-xml-declaration=\"yes\"/>"
  203. +"<xsl:templatematch=\"*\">"
  204. +"<xsl:copy-ofselect=\".\"/>"
  205. +"</xsl:template>"+"</xsl:stylesheet>";
  206.  
  207. try{
  208. StreamSourcetemplate=newStreamSource(
  209. newStringReader(xltString));
  210. TransformerFactoryfactory=TransformerFactory.newInstance();
  211. Transformertransformer=factory.newTransformer(template);
  212. transformer.setOutputProperty(OutputKeys.ENCODING,"Shift_JIS");
  213. transformer.transform(newDOMSource(root),result);
  214. }catch(TransformerExceptionex){
  215. thrownewTransformerException(ex.getMessage(),ex);
  216. }
  217. }
  218.  
  219. /**
  220. *ConvertsNodetoDocument.
  221. *
  222. *@paramnode
  223. *Node
  224. *@returnDocument
  225. *@throwsException
  226. *IndicatesFailedtoconvert.
  227. */
  228. publicstaticDocumentconvertToDocument(Nodenode)throwsException{
  229. Documentdoc=createDocument();
  230. doc.appendChild(doc.importNode(node,true));
  231. returndoc;
  232. }
  233.  
  234. /**
  235. *ConstructsnewDocument.
  236. *
  237. *@returnDocument
  238. *@throwsException
  239. *IndicatesFailedtoconvert.
  240. */
  241. publicstaticDocumentcreateDocument()throwsException{
  242. //finalStringmethod="createDocument()";
  243. try{
  244. DocumentBuilderFactoryfactory=DocumentBuilderFactory
  245. .newInstance();
  246. DocumentBuilderbuilder=factory.newDocumentBuilder();
  247. returnbuilder.newDocument();
  248. }catch(DOMExceptione){
  249. thrownewDOMException(ISeverityLevels.IMPORTANT,e.getMessage());
  250. }catch(ParserConfigurationExceptione){
  251. thrownewParserConfigurationException(e.getMessage());
  252. }
  253. }
  254.  
  255. /**
  256. *ParsesspecifiedXMLandreturnsconstructeddocument.
  257. *
  258. *@paramxml
  259. *XMLtoparse
  260. *@returnDocument
  261. *@throwsException
  262. *IndicatesFailedtoconvert.
  263. */
  264. publicstaticDocumentparseDocument(Stringxml)throwsException{
  265. //finalStringmethod="parseDocument(String)";
  266. try{
  267. DocumentBuilderFactoryfactory=DocumentBuilderFactory
  268. .newInstance();
  269. DocumentBuilderbuilder=factory.newDocumentBuilder();
  270. returnbuilder.parse(newInputSource(newStringReader(xml)));
  271. }catch(IOExceptione){
  272. thrownewIOException(e.getMessage(),e);
  273. }catch(DOMExceptione){
  274. thrownewDOMException(ISeverityLevels.IMPORTANT,e.getMessage());
  275. }catch(ParserConfigurationExceptione){
  276. thrownewParserConfigurationException(e.getMessage());
  277. }catch(SAXExceptione){
  278. thrownewSAXException(e.getMessage(),e);
  279. }
  280. }
  281.  
  282. publicinterfaceISeverityLevels{
  283. //severitylevelsforExceptionsandLogging
  284. publicfinalstaticshortCRITICAL=1;
  285. publicfinalstaticshortIMPORTANT=4;
  286. publicfinalstaticshortWARNING=7;
  287. publicfinalstaticshortINFORMATIONAL=10;
  288. publicfinalstaticshortDEBUG=13;
  289. publicfinalstaticshortVERBOSE=16;
  290. }
  291.  
  292. publicstaticStringgetXmlString(StringinFilename)throwsException{
  293. StringBuffersb=newStringBuffer();
  294. BufferedReaderreader=newBufferedReader(newFileReader(newFile(
  295. inFilename)));
  296. try{
  297. Stringline=null;
  298. while((line=reader.readLine())!=null){
  299. sb.append(line);
  300. }
  301. returnsb.toString();
  302. }finally{
  303. reader.close();
  304. }
  305. }
  306.  
  307. }

猜你在找的XML相关文章