xml dom 序列化

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.StringWriter;
 
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
import org.xmlpull.v1.XmlSerializer;
 
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;
 
import android.content.pm.PackageManager.NameNotFoundException;
import android.util.Xml;
 
public class XMLParser {
 
/**
* 根节点
*/
Element root_e;
 
File file;
 
String file_name = "myxml.xml";
String file_path = "/data/data/com.ztw.test/";
 
DocumentBuilderFactory docBuilderFactory = null;
DocumentBuilder docBuilder = null;
Document doc = null;
 
public Document ReadXML(String path) {
 
try {
docBuilderFactory = DocumentBuilderFactory.newInstance();
docBuilder = docBuilderFactory.newDocumentBuilder();
InputStream in = new FileInputStream("/data/data/com.spt.test/myxml.xml");
// xml file 放到 assets目录中的
doc = docBuilder.parse(in);
// root element
Element root = doc.getDocumentElement();
// Do something here
// get a NodeList by tagname
NodeList nodeList = root.getElementsByTagName("tag");
for (int i = 0; i < nodeList.getLength(); i++) {
Node nd = nodeList.item(i);
// Read Node
}
} catch (IOException e) {
} catch (SAXException e) {
} catch (ParserConfigurationException e) {
}
return doc;
}
 
public String xmltoStr(Document doc ){
XmlSerializer serializer = Xml.newSerializer();
StringWriter writer = new StringWriter();
try {
serializer.setOutput(writer);
serializer.startDocument("UTF-8", true);
Element root = doc.getDocumentElement();
dealNode(root, serializer);
serializer.endDocument();
return writer.toString();
} catch (Exception e) {
throw new RuntimeException(e);
}
}
private void dealNode(Node node,XmlSerializer serializer){
try {
if(node.getNodeType()==3){
serializer.text(node.getNodeValue());
return;
}
serializer.startTag("", node.getNodeName());
//把本node的text写入seriali
String text=node.getNodeValue();
if(text!=null)
serializer.text(text);
//先把node属性写入
//=====================================
NamedNodeMap map=node.getAttributes();
int attrSize=map.getLength();
for(int i=0;i<attrSize;i++){
//得到的是node的属性节点
Node Attrnode=map.item(i);
//写出名字和
String name=Attrnode.getNodeName();
String value=Attrnode.getNodeValue();
serializer.attribute("", name, value);
}
//=====================================
//再写node的各个子childnode
//=====================================
NodeList childs=node.getChildNodes();
int nodeSize=childs.getLength();
for(int i=0;i<nodeSize;i++){
//得到的是node的属性节点
Node Childnode=childs.item(i);
dealNode(Childnode,serializer);
}
serializer.endTag("", node.getNodeName());
 
 
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalStateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
 
public boolean Write(String path, String xmlstr) {
try {
OutputStream os = new FileOutputStream(path, false);
OutputStreamWriter osw = new OutputStreamWriter(os);
osw.write(txt);
osw.close();
os.close();
} catch (FileNotFoundException e) {
return false;
} catch (IOException e) {
return false;
}
return true;
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值