1.XML有如下应用:
1_存储数据,即在没有数据库的情况下,是一个很好的替代品;
2_传输数据,即服务器以XML的形式向android发送数据
3_软件配置,即通用配置XML文件,通知应用程序如何处理业务
2.判断XML语法及其有效性
浏览器能原样显示XML,说明XML语法没有问题。如果XML按照
DTD规则写的要经过浏览器显示原样,还有用专门检测工具来
检测是否符合DTD规则,如果符合DTD规则才算有效。
3.DTD三中基本关联方式:
内部:<!DOCTYPE 根节点 [
<!ELEMENT 元素 (约束条件)>
<!ELEMENT 元素 (约束条件)>
。。。 。。。。。
]>
外部:<!DOCTYPE 根节点 SYSTEM "路径">
公共:<!DOCTYPE 根节点 PUBLIC 名字 "路径" >
4.DTD约束要素
元素(ELEMENT)定义
属性(ATTLIST)定义
实体(ENTITY)定义
典例:
- company.dtd
- <!ENTITY%tip"name,loc">
- <!ELEMENTcompany(emp,cust)>
- <!ELEMENTemp(%tip;)>
- <!ELEMENTcust(%tip;)>
- <!ELEMENTname(#PCDATA)>
- <!ELEMENTloc(#PCDATA)>
- example.xml
- <?xmlversion="1.0"encoding="UTF-8"?>
- <!DOCTYPEbookstore[
- <!ELEMENTbookstore(book)>
- <!ELEMENTbook(title+)>
- <!ELEMENTtitle(#PCDATA)>
- <!ENTITYit"我们是一名软件工程师">
- ]>
- <bookstore>
- <book>
- <title>
- ⁢
- </title>
- </book>
- </bookstore>
5.XML解析(dom4j解析器)
SAXReade saxreader = new SAXReader;
document xsmldocumen = saxreader.read("xml文件路径");
典例:
- importjava.util.List;
- importorg.dom4j.Document;
- importorg.dom4j.Element;
- importorg.dom4j.io.SAXReader;
- /**
- *使用dom4j解析器
- *传统方式定位标签
- *XPATH方式定位d标签
- */
- publicclassDemo06{
- publicstaticvoidmain(String[]args)throwsException{
- //创建dom4j解析器对象
- SAXReadersaxReader=newSAXReader();
- //创建InputStream对象,指向硬盘的xml文件
- DocumentxmlDocument=
- saxReader.read(
- Demo06.class.getClassLoader().getResource("cn/itcast/android/xml/tv.xml"));
- //ElementrootElement=xmlDocument.getRootElement();
- //Stringname=rootElement.element("a").element("b").element("c").element("d").getText().trim();
- //System.out.println(name);
- //System.out.println("----------------------------------");
- //Stringxpath="/tv/a/b/c/d";
- //Stringxpath="//d";
- //Stringage="23";
- //Stringxpath="//d[@age='"+age+"']";
- Stringxpath="//e[@name='哈哈'and@pass='123']";
- Elementelement=(Element)xmlDocument.selectSingleNode(xpath);
- //List<Element>list=xmlDocument.selectNodes(xpath);
- if(element!=null){
- Stringname=element.getText().trim();
- System.out.println(name);
- }else{
- System.out.println("查无此人");
- }
- }
- }