XML_dtd属性与 解析
来源:互联网 发布:webstorm js编码 编辑:程序博客网 时间:2024/06/09 16:06
属性:
<?xml version="1.0" encoding="GBK"?>
<!DOCTYPE students[
<!ELEMENT students (student)*>
<!ELEMENT student (#PCDATA)>
<!ATTLIST student id ID #REQUIRED>
<!ATTLIST student name CDATA #REQUIRED>
<!ATTLIST student gender (男|女) #IMPLIED>
<!ATTLIST student ip NMTOKEN #IMPLIED>
<!ATTLIST student address CDATA #FIXED '传承路'>
<!ATTLIST student age CDATA '20'>
<!ENTITY hello "猫">
<!ENTITY hell SYSTEM "entity.txt">
]>
<!--
DTD中属性的定义:
格式:
<!ATTLIST 属性所在的元素 属性的名字 属性的类型 默认值类型>
属性的类型:
ID:表示该元素唯一 类型为ID的属性 在文档中是唯一的
如果属性类型是ID 则不能以数字开头
CDATA:表示字符数据 (最常用)
枚举类型:将所有可以出现的情况列举出来 如:(男|女)
NMTOKEN:是CDATA一个子类 表示该属性的值只能包括:字母 数字 句号 _ 中间不能包括空格
默认值类型:
#REQUIRED 表示该属性必须出现
#IMPLIED 表示该属性可以出现
#FIXED 表示该属性的值是固定的 不能够改变
实体:
内部实体:
<!ENTITY 实体的名字 "实体中的内容">
引用实体方式: &实体名称
外部实体:
<!ENTITY 实体名称 SYSTEM "资源路径">
-->
<students>
<student id='no1' name='asf' gender='男' ip='192.168.12.1'>
&hell;
&hello;
</student>
</students>
解析实例:
package XML.dom;
import java.io.File;
import java.io.IOException;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import org.w3c.dom.Document;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;
public class MyDomTest {
public static void main(String[] args) {
//解析文档需要一个解析器
//第一步:先拿到一个工厂对象
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
try {
//第二步:获取解析器
DocumentBuilder builder =factory.newDocumentBuilder();
//第三步:进行解析,获得Document对象
Document doc = builder.parse(new File("src/Task2.xml"));
//
// NodeList nodeList = doc.getChildNodes().item(1).getChildNodes();
// System.out.println("当前根节点的节点数"+nodeList.getLength());
//随机访问已知元素名称的指定节点
NodeList nodeList = doc.getElementsByTagName("students");
Node node = nodeList.item(0);
listAllNodes(node);
} catch (ParserConfigurationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SAXException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//对指定的节点进行遍历
public static void listAllNodes(Node node){
System.out.println("节点名 "+node.getNodeName()+
" 节点值 "+node.getNodeValue());
//判断节点的类型 遍历当前元素节点的属性
if(node.getNodeType()==Node.ELEMENT_NODE){
if(node.hasAttributes()){//判断是否有属性节点
NamedNodeMap attrs= node.getAttributes();//获取属性集合
for(int i=0;i<attrs.getLength();i++){
Node attrNode = attrs.item(i);//获取当前节点
System.out.println(attrNode.getNodeName()+
"---"+attrNode.getNodeValue());
}
/*Element e = (Element) node;//造型 还原
e.getAttribute("name");*/
}
//遍历当前元素节点的子节点,利用递归实现
if(node.hasChildNodes()){//如果有子节点
NodeList nodeList = node.getChildNodes();
for(int i=0;i<nodeList.getLength();i++){
Node childNode = nodeList.item(i);
listAllNodes(childNode);//递归
}
}
}
}
}
- XML_dtd属性与 解析
- XML_DTD
- XML_DTD
- XML_DTD
- XML_dtd约束
- android:layout_height与android:layout_width属性解析
- XML解析之----SAX解析(带属性与不带属性)----自定义Handler类
- MVC模式下FreeMarker视图解析器与属性配置
- IOS开发>>UITextfield控件的所有属性设置与解析
- ListView与TextView的几种特殊属性解析
- UITextfield控件的所有属性设置与解析
- Layout_weight属性完全解析与使用ListView来实现表格
- Android中Activity与Task相关的属性解析
- UITextfield控件的所有属性设置与解析
- UITextfield控件的所有属性设置与解析
- Android动画解析 View动画,帧动画与属性动画
- ASP.NET中SmartNavigator(1.1)属性与MaintainScrollPositionOnPostback新属性解析
- iOS动画 属性属性解析
- Sqlite3 C/C++ 初级入门
- Android 点击图片切换(代码与xml)
- HDU 1272 判断树
- SQL CTE 递归游戏-你厉害吗,来过5关
- tomcat报错java.net.BindException: Address already in use
- XML_dtd属性与 解析
- 关于C#中base的解释
- 如何维护应用程序状态
- 从B树、B+树、B*树谈到R树
- redis 学习 之 数据操作
- java.util.Date与java.sql.Date的相互转换和存取
- linux cp命令介绍
- 正则表达式30分钟入门教程
- C#中实现透明控件