XML基础知识学习
2017-05-06 20:50
344 查看
概念:XML指可扩展标记语言XML是一种标记语言,非常类似HTML,文本文件.XML的设计宗旨是数据传输,而非显示数据。存储和传输复杂的关系模型数据XML标签没有被提前定义使用约束的XML文档设计具有自我描写叙述性。XML是W3C的推荐标准XML语法:一个XML文件分为例如以下几部分内容:文档声明<?xmlversion="1.0"ecoding="utf-8">元素:有開始有结束属性凝视CDATA区、特殊字符处理指令(processinginstruction)CDATA区:不被解析<![CDATA[内容]]>或者转义字符:<script>子元素</script>
处理指令DTD元素
<? xmlversion="1.0"encoding="UTF-8"standalone="no"? ><!--使用内容的dtd--><books>
<bookkuan="">
<bookname>红楼梦</bookname>
<author>小张</author>
<value>15.6</value></book>
<bookkuan="">
<bookname>爱我是</bookname>
<author>撒地方</author>
</book>
</books>[/code]
publicclasstest1{
/**
*@paramargs
*@throwsParserConfigurationException
*@throwsIOException
*@throwsSAXException
*@throwsTransformerException
*/
publicstaticvoidmain(String[]args)throwsParserConfigurationException,
SAXException,IOException,TransformerException{
// addElement();
// updateText();
deleteElement();
}
/**删除元素
*@throwsParserConfigurationException
*@throwsSAXException
*@throwsIOException
*@throwsTransformerException
*@throwsTransformerFactoryConfigurationError
*@throwsTransformerConfigurationException
*/
privatestaticvoiddeleteElement()throwsParserConfigurationException,SAXException,IOException,TransformerConfigurationException,TransformerFactoryConfigurationError,TransformerException{
Documentdocument=getDocument("dtd/books.xml");
NodeListnodeList=document.getElementsByTagName("author");
Elementelement=(Element)nodeList.item(0);
//通过父亲来删除子节点
element.getParentNode().removeChild(element);
domToFile(document);
}
/**加入元素
*@throwsParserConfigurationException
*@throwsSAXException
*@throwsIOException
*@throwsTransformerFactoryConfigurationError
*@throwsTransformerConfigurationException
*@throwsTransformerException
*/
privatestaticvoidaddElement()throwsParserConfigurationException,
SAXException,IOException,TransformerFactoryConfigurationError,
TransformerConfigurationException,TransformerException{
Documentdocument=getDocument("dtd/books.xml");
Elementelement=document.createElement("value");
element.setTextContent("15.6");
document.getElementsByTagName("book").item(0).appendChild(element);
domToFile(document);
}
//改动
publicstaticvoidupdateText()throwsParserConfigurationException,SAXException,IOException,TransformerConfigurationException,TransformerFactoryConfigurationError,TransformerException{
Documentdocument=getDocument("dtd/books.xml");
NodeListnodeList=document.getElementsByTagName("author");
Elementelement=(Element)nodeList.item(1);
element.setTextContent("小红");
domToFile(document);
}
/**由于是载入到内存,所以须要回写到xml文件里
*@paramdocument
*@throwsTransformerFactoryConfigurationError
*@throwsTransformerConfigurationException
*@throwsTransformerException
*/
privatestaticvoiddomToFile(Documentdocument)
throwsTransformerFactoryConfigurationError,
TransformerConfigurationException,TransformerException{
TransformerFactoryfactory=TransformerFactory.newInstance();
Transformertf=factory.newTransformer();
tf.transform(newDOMSource(document),newStreamResult("dtd/books.xml"));
}
/**得到document
*@paramfile
*@return
*@throwsParserConfigurationException
*@throwsSAXException
*@throwsIOException
*/
publicstaticDocumentgetDocument(Stringfile)
throwsParserConfigurationException,SAXException,IOException{
//TODOAuto-generatedmethodstub
//解析器工厂
DocumentBuilderFactorybuilderFactory=DocumentBuilderFactory
.newInstance();
//解析器
DocumentBuilderdb=builderFactory.newDocumentBuilder();
Documentdocument=(Document)db.parse(file);
returndocument;
}
}[/code]2、使用SAX方式解析XML
//1.得到sax解析器工厂
SAXParserFactoryfactory=SAXParserFactory.newInstance();
//2.得到sax解析器
SAXParserparse=factory.newSAXParser();
//parse.parse("xml/books.xml",newMyHandle());//这句话能够替换以下的三句
//3.得到读取器
XMLReaderreader=parse.getXMLReader();
//4设置读取器的事件处理器
reader.setContentHandler(newMyHandle());
//5.真正读取文件
reader.parse("xml/books.xml");
classMyHandleextendsDefaultHandler{
@Override
publicvoidstartDocument()throwsSAXException{
System.out.println("startdocument");
}
@Override
publicvoidstartElement(Stringuri,StringlocalName,StringqName,
Attributesattributes)throwsSAXException{
//qName能够得到元素名称
//能够通过attributes得到当前元素的全部属性
System.out.println("<"+qName+">");
}
@Overrid
publicvoidcharacters(char[]ch,intstart,intlength)
throwsSAXException{
//能够得到元素中的文本信息
System.out.println(newString(ch,start,length));
}
@Override
publicvoidendElement(Stringuri,StringlocalName,StringqName)
throwsSAXException{
System.out.println("<"+qName+">");
}
@Override
publicvoidendDocument()throwsSAXException{
System.out.println("endDocument");
}[/code]3.使用dom4j解析xmlDom4j是一个简单、灵活的开放源码的库。Dom4j是由早期开发JDOM的人分离出来而后独立开发的。与JDOM不同的是,dom4j使用接口和抽象基类,尽管Dom4j的API相对要复杂一些,但它提供了比JDOM更好的灵活性Dom4j是一个非常优秀的JavaXMLAPI,具有性能优异、功能强大和极易使用的特点。如今非常多软件採用的Dom4j,比如Hibernate。包含sun公司自己的JAXM也用了Dom4j使用Dom4j开发。需下载dom4j对应的jar文件注意:1.一个XML元素能够包括字母、数字以及其他一些可见字符。但必须遵守以下的一些规范:区分大写和小写,比如。<P>和<p>是两个不同的标记。不能以数字或"_"(下划线)开头。不能以xml(或XML、或Xml等)开头。不能包括空格。名称中间不能包括冒号(:)。2.Xml文件里的凝视採用:“<!--凝视-->”格式。XML声明之前不能有凝视凝视不能嵌套3.全部XML元素都须有关闭标签XML标签对大写和小写敏感XML必须正确地嵌套顺序XML文档必须有根元素XML的属性值须加引號特殊字符必须转义XML中的空格会被保留
相关文章推荐
- xml基础知识学习笔记
- 学习Spring必学的Java基础知识(4)----XML基础知识
- XML基础知识学习四(XML元素)
- XML基础知识学习三(XML 语法)
- Android入门学习笔记(一)|基础知识|文件数据存储读取|解析XML
- XML基础知识学习八(使用XSL来显示XML数据)
- XML基础知识学习六(XML 确认)
- Spring AOP基础知识学习——XML配置
- XML基础知识学习十(微软的XML解析器)
- .net学习笔记---xml基础知识
- XML基础知识学习二(如何使用XML?)
- XML基础知识学习一(如何使用XML?)
- xml基础知识的学习
- XML基础知识学习
- XML基础知识学习九(XML数据岛)
- XML基础知识学习五(XML 属性)
- XML基础知识学习七(XML 浏览器(Netscape、Explorer))
- XML基础知识学习
- XML基础学习
- xml基础知识