📄 xml_dom解析.txt
字号:
三、xml的作用:主要用于数据的传输,如配置、数据交换,
与html比较,其主要传输数据,标签可自定义,html主要是
显示信息,标签不可自定义。
四、dtd:说明xml文件的结构。
元素:
<!element customers(customer+)>
<!element customer(customerName,sex,age)>
<customer>
<customerName></customerName>
<sex></sex>
<age></age>
</customer>
+:1..n
*:0..n
?:0..1
|:多选一
,:依次出现
属性:
<!attlist 元素名 属性名 类型 修饰>
<!attlist customer customerID ID #REQUIRED,
business CDATA #IMPLIED
>
五、schema
1、复杂类型:当前元素有子元素或属性时必须用复杂类型
<complexType name="customers">
<sequence>
<element name="customer" minOccors="0" maxOccors="unbounded">
</sequence>
<attribute name="customerID" type="xs:string"/>
</complexType>
<element name="sex" type="sex_type"/>
2、简单类型:说明一个元素的文本值或属性值。
<simpleType name="sex_type">
<restriction base="xs:string">
<enumeration value="男"/>
<enumeration value="女"/>
</restriction>
</simpleType>
3、可以通过type指向已有的一个类型。
六、xsl:可以将一个xml转化为一个html
1、必须有一个template
2、通过apply-template调用另一个template
3、主要标签
sort
value-of
template
apply-template
for
choose
变量
七、dom解析原理
将整个xml文件加载到内存中形成一个dom树,dom树中的每一个节点是一个对象,
通过对象的方法与外界交互。
优:
可随意读 可写
缺:
解析慢
内存消耗大
八、dom的六大接口
Document:文档
NodeList nl=doc.getElementsByTagName("customer");
Element customer=doc.createElement("customer");
doc.createTextNode();
doc.applentChild("");//加入一个根节点
doc.documentElement;//得到根元素
Node:节点
Element:元素
applendChild()
setAttribute("属性名","值");
getAttribute("属性名");
TextNode:文本节点
getNodeValue();//得到文本节点值
Attribute:属性
NodeList:节点集合
1、得到长度
nl.getLength();
2、取出一个节点
nl.item(1);
七、dom的解析过程
DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance();
DocumentBuilder db=dbf.newDocumentBuilder();
Document doc=db.parse("c:/a.xml");//解析已有的xml文档
Document doc=db.newDocument();//产生一个新的dom对象
八、dom的写出过程
TransformerFactory tff=TransformerFactory.newInstance();
Transformer tffer=tff.newTransformer();
tffer.trans(new DOMSource(doc),new StreamResult("c:\a.xml"));
九、sax解析
特点:边读边解析,只读,只进,不可写,所以快,消耗内存小。
实现:
1、实现的一个处理类继承于DefaultHandler,覆盖如下方法
startDocument:文档开始调用
startElement:元素开始调用
character:遇到元素文本调用
endElement:元素结束调用
endDocument:文档结束调用
2、通过SaxParser解析
SaxParserFactory spf=SaxParserFactory.newInstance();
SaxParser parser=spf.newSaxParser();
parser.parse(new 处理类,具体的xml文件);
十、通过sax解析customer.xml文件,将customer.xml中的内容写入到数据库中。
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -