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
名稱空間,約束語法等