XML

XML
1)<![CDATA[內容]]> 原始內容直接輸出
2)DTD
_1當引用文件在本地時 <!DOCTYPE 文檔根節點 SYSTEM "DTD文件的URL">
當引用的文件是一個公共文件時 <!DOCTYPE 文檔根節點 PUBLIC "DTD名稱" "DTD文件的URL">
_2引用實體,主要在XML文檔中應用 <!ENTITY bookname "javaeb"> 引用實體:&bookname;
參數實體,主要在DTD中應用 <!ENTITY % TAG_NAMES "NAME|EMAIL|PHONE"> 引用實體:%TAG_NAMES;
3)XML編程(CRUD)create read update delete
_1DOM和sax解析方法的區別:dom解析的優點是對文檔crud比較方便,缺點是佔用內存較大;sax解析的優點是佔用內存小,解析速度快,缺點是隻適合做文檔的讀取,不適合做文檔的crud
_2jaxp解析

Dom解析:

<pre name="code" class="java">		<span style="font-family: Arial, Helvetica, sans-serif;">//1.創建工廠</span>
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();//2.得到Dom解析器DocumentBuilder builder = factory.newDocumentBuilder();//3.解析xml文檔,得到代表文檔的documentDocument document = builder.parse("src/student/practice/xml/book.xml");//........(crud) //注意最後要從內存中寫出//把更新後內存寫回到xml文檔TransformerFactory tff = TransformerFactory.newInstance();Transformer tf = tff.newTransformer();tf.transform(new DOMSource(document), new StreamResult(new FileOutputStream("src/student/practice/xml/book.xml")));

SAX解析:
		//得到解析工廠
		SAXParserFactory factory = SAXParserFactory.newInstance();
		//得到解析器
		SAXParser sp = factory.newSAXParser();
		//得到讀取器
		XMLReader reader = sp.getXMLReader();
		//設置內容處理器
		reader.setContentHandler(解析器類對象);
		//讀取xml文檔內容
		reader.parse("src/student/practice/xml/book.xml");


_3Dom4j解析(dom4j包,需要jaxen-1.1-beta包支持)
		SAXReader reader = new SAXReader();
		Document document = reader.read(new File(filepath));//有時候也會亂碼,讀取時要把字節編碼,如下注釋代碼:
		//Document document = reader.read(new InputStreamReader(new FileInputStream(filepath),"utf-8"));
		Element root = document.getRootElement();
		...
		//XMLWriter writer = new XMLWriter(new FileWriter(filepath));//默認採用gb2312寫入,可能會亂碼

		OutputFormat format = OutputFormat.createPrettyPrint();
		format.setEncoding("gb2312");//內存中documentgb2312,gb2312文檔寫入		
		XMLWriter writer = new XMLWriter(new OutputStreamWriter(new FileOutputStream(filepath), "gb2312"), format);
		//這個不亂碼是碰巧,因爲控制OutputStreamWriter查gb2312碼錶,但是FileOutputStream仍然默認是gb2312,所以如果全是utf-8,依然會亂碼
		//可以採用以下代碼:
		//XMLWriter writer = new XMLWriter(new FileOutputStream(filepath), "gb2312"), format);
		writer.write(document);
		writer.close();


_4xpath
		SAXReader reader = new SAXReader();//xpath學習見文檔
		Document document = reader.read(new File(filepath));
		String value = document.selectSingleNode("//@name").getText();


4)Schema
名稱空間,約束語法等

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章