XML

来源:互联网 发布:js validate 验证 编辑:程序博客网 时间:2024/04/30 01:49
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
名称空间,约束语法等

2 0
原创粉丝点击