xml解析相关总结

原创 2013年12月03日 17:04:28

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解析相关资料

  • 2013-07-05 08:13
  • 4.44MB
  • 下载

IBM SUN JDK XML解析相关

  • 2009-09-18 08:33
  • 580KB
  • 下载

Mybatis Generator相关xml配置文件含义解析

转自 http://www.jianshu.com/p/e09d2370b796 Mybatis Generator相关xml配置文件含义解析 <!DOCTYPE generatorConf...

xml解析Demo以及相关jar包

  • 2015-04-28 16:07
  • 604KB
  • 下载

VC6中XML解析相关笔记(二)

在工程的实现过程中,遇到XML相关知识,作记录,便于查看。 1,为了防止当前目录发生变化(如操作过程中出现“浏览”操作),在程序初始化时就保存当前的工程目录:TCHAR tchBuffer[MAX_...

解析 xml 相关包 dom4j-1.6.1

  • 2016-05-09 11:01
  • 307KB
  • 下载

VC6中XML解析相关笔记

注:本文知识基本均来自网络,可自行查阅,这里仅仅是留作笔记方便本人查询。防忘! 目的:解决对话框中文字、图片以及按钮图片的动态配置问题; 通过读取XML中的信息解决; 先安装MSXML 4.0 ...

XML解析工具--jdom相关资料

  • 2012-03-05 21:36
  • 11.74MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)