1.xml
(1)<?xml version="1.0" encoding="UTF-8" standalone=“yes" ?>
(2)样式表<?xml-stylesheet type="text/css" href="my.css" ?>
(3)约束
(4)字符元素 CDATA “<![CDATA[” “]]>”
子元素
1.js调用xml
ActiveX插件 为ie设置
(1)建立空对象
var doc;
try{
doc=document.implementation.createDocument("", "", null);
}
catch (e) {
doc=new ActiveXObject("Microsoft.XMLDOM");
}
(2)把xml数据加载到doc对象中,以后js就可以操作doc对象
IE浏览器加载xml
doc.load("books.xml");
doc.loadXML('<books><book isbn="BH10001"><name>java学习</name><price>100</price></book></books>');
非IE浏览器加载xml
var data
var dom=new DOMParser();
doc=dom.parseFromString(data,"text/xml");
(3)操作doc动态增加一条
Var root=doc.getElementsByTagName("books")[0];
root.appendChild(mybook);
Var books=root.children;
for(var i=0;i<books.length;i++){
var tr=document.createElement("tr");
var td1=document.createElement("td");
var td2=document.createElement("td");
var td3=document.createElement("td");
td1.innerHTML=books[i].getAttribute("isbn");
Var name=books[i].firstChild.innerHTML;
td2.innerHTML=name;
var price=books[i].lastChild.innerHTML;
td3.innerHTML=price;
}
2.服务器解析
(1)dom解析
Document
DocumentBuilder
DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(in)
(2)SAX解析
SAXParserFactory.newInstance().newSAXParser().getXMLReader().setContentHandler(new ContentHandler(){}
ibatis
(3)Dom4J
①SAXReader
取得SAXReader的对象
SAXReader reader = new SAXReader();
//进行读取文档对象
Document doc = reader.read(Test.class.getResourceAsStream("books3.xml"));
//得到根元素
Element root=doc.getRootElement();
/通过ID获取
Element book1=doc.elementByID("BH10001");
Element name=book1.element("name");
②xpath
Node bookNode=root.selectSingleNode("/books/book");
xpath语法
* /代表从根节点开始查找
* /books/book 从根开始找book元素
* name 从当前节点找name元素
* book/name 从当前节点找book节点下的name元素
* book[2] 从当前节点找第二个book节点
* book/@属性名 从当前节点找book中的属性(第一个)
· book[2]/@属性名 从当前节点找第二本book节点中的属性
②dom解析
DOMReader read=new DOMReader();
DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(file)= docW3C
Document doc=read.read(docW3C);
③写xml
Document document=DocumentHelper.createDocument()
XMLWriter writer=new XMLWriter(xmlFile,format);
writer.write(document);
writer.close();
3.xml文档约束(约束xml文件的书写规范)
(1)DTD(document type definition)文档类型定义
新建book.dtd
‚元素构成
A.元素element
不带子元素
<!ELEMENT 元素名称 类别>
带子元素
<!ELEMENT 元素名称 (元素内容)>
B.属性
属性ATTLIST
<!ATTLIST 元素名称 属性名称 属性类型 默认值>
属性类型 CDATA ID IDREF
属性默认值#REQUIRED #IMPLIED #FIXED value
<!ELEMENT 书架 (书+)>
<!ELEMENT 书 (书名,作者,售价)>
<!ELEMENT 书名 (#PCDATA)>
<!ELEMENT 作者 (#PCDATA)>
<!ELEMENT 售价 (#PCDATA)>
<?xml version="1.0" ?>
<!DOCTYPE 书架 SYSTEM "book.dtd">
<书架>
<书>
<书名>Java就业培训教程</书名>
<作者>张孝祥</作者>
<售价>39.00元</售价>
</书>
<书>
<书名>JavaScript网页开发</书名>
<作者>张孝祥</作者>
<售价>28.00元</售价>
</书>
</书架>
(3)本地路径 SYSTEM
URL形式PUBLIC
1.使用本地的
<!DOCTYPE struts SYSTEM "struts-2.3.dtd">
2.使用public网络上的dtd文档
3.使用eclipse提供的模版-//Apache Software Foundation/......
4.用户自定义dtd
(2)
4.schema
(1)xmlns-xml的命名空间 xsd-xml的schema定义文件
xmlns:tns自己使用的命名空间
targetNamespace让受约束的xml文档使用此命名空间
(2)基本类型
扩展类型 simpletype 内部嵌入
<simpleType name=“mytype">
<restriction base="int">
<minInclusive value="1"></minInclusive>
<maxInclusive value="100"></maxInclusive>
</restriction>
</simpleType>
<xs:element name ="元素1 " type=“tns:mytype "/>
复合类型 complex type 内部嵌入