使用SAX解析XML
SAX(Simple API for XML简称SAX)事件是无状态的,也就是说,当接收到字符数据的事件后,并不知道该字符数据是哪一个元素的
内容。同样地,当收到元素开始的事件后,也无法知道该元素是否有父元素,是否有子元素,这是
SAX和DOM不同的地方。SAX解析器本身并不提供元素的上下文信息,所有相关信息的记录需要我们自
己编程去实现
SaxXml类加载XML数据流,(目前用字符串代替),建立解析工厂,生产SAX解析对象
import java.io.ByteArrayInputStream;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import org.xml.sax.SAXException;
public class SaxXml {
private SaxXml() {
}
SaxXml(String xmlFile) {
try{
String xmltest = "<?xml version=\"1.0\" encoding=\"gb2312\"?>"
+"<home>"
+"<name>张三</name>"
+"<sex>男</sex>"
+"<age>20</age>"
+"</home>";
byte[] data1 = xml.getBytes();
SAXParserFactory factory = SAXParserFactory.newInstance();
factory.setValidating(true);
SAXParser sax = factory.newSAXParser();
sax.parse(new ByteArrayInputStream(data1), XmlHandler.handler/*new XmlHandler()*/ );
} catch (ParserConfigurationException pce) {
System.out.println("Could not create that parser.");
System.out.println(pce.getMessage());
} catch (SAXException saxe) {
System.out.println("Problem wITh the SAX parser.");
System.out.println(saxe.getMessage());
} catch (Exception e) {
e.printStackTrace();
&n
相关文档:
IsolatedStorageFile:包含文件和数据的独立存储区
dataset数据存储到本地xml文档,代码处理如下
public static void WriteDataToXML(DataSet dataset, string dataname)
{
try
{
IsolatedStorageFile isoStore = IsolatedStorageFile.GetUserStoreForAssembly(); / ......
Definition comparer class,
class ItemComparer : IEqualityComparer<XElement>
{
public bool Equals(XElement x, XElement y)
{
return x.Attribute("Name").Value == x.Attribute("Name").Value;
}
public int GetHashCode(XElement obj)
......
public int createXMLFile(String filename) {
int returnValue = 0;
Document document = DocumentHelper.createDocument(); //生成Document,用于管理XML文档
Element booksElement = document.addElement("books"); //添加 ......
XML文件实例:
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<Context>
<WatchedResource>WEB-INF/web.xml</WatchedResource>
<Resource auth="Container" maxActive="20" name="sss" password="123"
type="javax.sql.DataSource" />
<Resource auth="Container" ......
package com.jcauto.action;
import java.util.ArrayList;
import java.util.List;
public class ContentRsp {
private String resultCode;
List<ContentInfo> contentList = new ArrayList<ContentInfo>();
public void addContent(ContentInfo contentInfo) {
contentList.add(contentI ......