xml解析相关总结
2013-12-03 17:04
344 查看
xml解析
//获得一个XML文件的解析器 DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); //解析XML文件生成DOM文档的接口类,以便访问DOM。 DocumentBuilder builder = factory.newDocumentBuilder(); document = builder.parse( new File(FileName) );遍历DOM文档
//获得Root元素 Element root = document.getDocumentElement(); //获得Root元素的子节点列表 nodelist = root.getChildNodes();或者通过标签来获得element
NodeList body = root.getElementsByTagName("body");假设body下有很多子条目div,则可以一个个取出来单独解析。
<html> <head> </head> <body> <div name="1"> <p id="path">TEMP</p> <p id ="title">....</p> <p id="summary">...</p> <a href="http://....">下载</a> </div> <div name="9"> <p id="name">...</p> <p id='version'>100</p> <details> <summary>...</summary> <img src="http://....png" title="xx" /> </details> <a href="http://..."title="url">下载</a> </div> </body></html>
NodeList divs = ((Element) (body.item(0))).getElementsByTagName("div"); Element div = (Element) divs.item(i);然后通过div.getAttribute("name")来获取div的属性,通过NodeList child = div.getElementsByTagName("p");来获取div的子条目<p>的element,并解析。
int len = child.getLength(); for (int i = 0; i < len; i++) { Element p = (Element) child.item(i); String idVal = p.getAttribute("id"); if (idVal.equals("name")) name = p.getTextContent(); if (idVal.equals("version")) version = p.getTextContent(); ...... }
将DOM文档转化成XML文件
TransformerFactory tfactory = TransformerFactory.newInstance(); Transformer transformer = tfactory.newTransformer(); // 将DOM对象转化为DOMSource类对象,该对象表现为转化成别的表达形式的信息容器。 DOMSource source = new DOMSource(document); // 获得一个StreamResult类对象,该对象是DOM文档转化成的其他形式的文档的容器,可以是XML文件,文本文件,HTML文件。这里为一个XML文件。 StreamResult result = new StreamResult(new File(“text.xml”)); // 调用API,将DOM文档转化成XML文件。 transformer.transform(source,result);需要注意的是,document哪怕是整个xml文档的一部分,例如上例中的某个div,转换得到的仍是整个xml文档。这一块没有继续去看,不知道有没别的解决办法。
Document转化成String
DOMSource source = new DOMSource(doc); StringWriter writer = new StringWriter(); Result result = new StreamResult(writer); Transformer transformer = TransformerFactory.newInstance().newTransformer(); transformer.transform(source, result); String xml = writer.getBuffer().toString();
注:上述方法会返回整个xml的String。
xml转换成数据流
/** * 将一个字符串转化为输入流 */ public static InputStream getStringStream(String sInputString){ if (sInputString != null && !sInputString.trim().equals("")){ try{ ByteArrayInputStream tInputStringStream = new ByteArrayInputStream(sInputString.getBytes()); return tInputStringStream; }catch (Exception ex){ ex.printStackTrace(); } } return null; }
/** * 将一个输入流转化为字符串 */ public static String getStreamString(InputStream tInputStream){ if (tInputStream != null){ try{ BufferedReader tBufferedReader = new BufferedReader(new InputStreamReader(tInputStream, "UTF-8")); StringBuffer tStringBuffer = new StringBuffer(); String sTempOneLine = new String(""); while ((sTempOneLine = tBufferedReader.readLine()) != null){ tStringBuffer.append(sTempOneLine); } return tStringBuffer.toString(); }catch (Exception ex){ ex.printStackTrace(); } } return null; }
这样的话,就可以任意的使用xml,存储和解析xml。
相关文章推荐
- XML-03总结---SAX方式解析XML------------------01
- android解析XML总结(SAX、Pull、Dom三种方式)
- [转]android解析XML总结
- java解析XML的四种方式-学习总结
- java基础71 XML解析中的【DOM和SAX解析工具】相关知识点(网页知识)
- Web Services开发总结二 XML及相关规范学习资料
- java解析xml常用的几种方式总结
- Dom4j解析XML应用总结
- Dom4j解析xml总结
- android解析XML总结(SAX、Pull、Dom三种方式)
- XML解析的三种方式总结
- android解析XML总结(SAX、Pull、Dom三种方式)
- Android解析XML总结(SAX、Pull、Dom三种方式)
- 新人对刚学的xml解析做些总结
- XML学习总结-SAX解析-(三)
- jQuery 获取跨域XML(RSS)数据的相关总结分析
- android利用XmlPullParse对XML进行解析读取(1) + (2) 总结
- xml解析方法总结
- android解析XML总结(SAX、Pull、Dom三种方式)
- Android开发学习总结(1.20-XML解析)