xml解析相关总结

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。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


php输出xml格式字符串
J2ME Mobile 3D入门教程系列文章之一
XML轻松学习手册
XML入门的常见问题(一)
XML入门的常见问题(三)
XML轻松学习手册(2)XML概念
xml文件介绍及使用
xml编程(一)-xml语法
XML文件结构和基本语法
第2章 包装类
XML入门的常见问题(二)
Java对象的强、软、弱和虚引用
JS解析XML文件和XML字符串详解
java中枚举的详细使用介绍
了解Xml格式
XML入门的常见问题(四)
深入SQLite多线程的使用总结详解
PlayFramework完整实现一个APP(一)
XML和YAML的使用方法
XML轻松学习总节篇