Java对XML解析(笔记)
来源:互联网 发布:淘宝卖家辱骂买家处罚 编辑:程序博客网 时间:2024/04/28 18:15
XML文件
<?xml version="1.0" encoding="utf-8"?><!--使用内部DTD文件--><!DOCTYPE pets [ <!ELEMENT pets (dogs,penguins)> <!ELEMENT dogs (dog*)> <!ELEMENT penguins (penguin+)> <!ELEMENT dog (name,health,love,strain?)> <!ATTLIST dog id CDATA #REQUIRED> <!ELEMENT penguin (name,health,love,sex)> <!ATTLIST penguin id CDATA #REQUIRED> <!ELEMENT name (#PCDATA)> <!ELEMENT health (#PCDATA)> <!ELEMENT love (#PCDATA)> <!ELEMENT starain (#PCDATA)> <!ELEMENT sex (#PCDATA)>]><pets> <dogs> <dog id = "1"> <name>YAYA</name> <health>100</health> <love>99</love> <strain>雪瑞</strain> </dog> <dog id = "2"> <name>OUOU</name> <health>100</health> <love>80</love> <strain>拉布拉多</strain> </dog> </dogs> <penguins> <penguin id = "3"> <name>QQ</name> <health>90</health> <love>80</love> <strain>Q仔</strain> </penguin> </penguins></pets>
DTD学习笔记
一个XML文档均以一下简单模块构成:元素、属性、实体、PCDATA(被解析的字符数据)、CDATA(字符数据)
<!DOCTYPE 文本根节点名称 [包含类别]>
声明一个元素:<!ELEMENT 元素名称 类别>或<!ELEMENT 元素名称 (元素内容)>
申明一个空元素:<!ELEMENT 元素名称 EMPTY> 如:<!ELEMENT br EMPTY>
带有子元素(序列)的元素:<!ELEMENT 元素名称 (子元素名称 1,子元素名称 2,.....)>
声明只出现一次的元素:<!ELEMENT 元素名称 (子元素名称)>
声明最少出现一次的元素:<!ELEMENT 元素名称 (子元素名称+)>
声明出现零次或多次的元素:<!ELEMENT 元素名称 (子元素名称*)>
声明出现零次或一次的元素:<!ELEMENT 元素名称 (子元素名称?)>
声明“非.../即...”类型的内容:<!ELEMENT note (to,from,header,(message|body))>
声明属性:
<!ATTLIST 元素名称 属性名称 属性类型 默认值> 如:<!ATTLIST payment type CDATA "check">
属性类型:CDAT(值为字符数据),(e1|e2|...)(此值是枚举列表),ID(值为唯一的id),IDREF(值为另一个元素的id),IDREFS(值为其他id列表)
NMTOKEN(值为合法XML名称),NMTOKENS(值为合法XML名称列表),ENTITY(为实体),ENTITIES(实体列表)NOATIOM(此值是符号的名称),
xml:(值是一个预定义的xml值)
默认值:值(默认值),#REQUIRED(值时必须的), #IMPLIED(值不是必须的), #FIXED value(值是固定的)
实体声明:<!ENTITY 实体名称 "实体的值"> 如:<!ENTITY writer "Bill Gates">
//得到Dom解析器的工厂实例DocumentBuliderFactory dbf = FocumentBuliderFactory.newInstance();try{ //从XML工厂获得DOM解析器 DocumentBulider db = dbf.newDocumentBulider(); //解析XML文档,得到一个Docment,即Dom树 Document doc = db.parse("pet.xml"); //得到所有dog节点列表信息 NodeList dogList = doc.getElementsByTagName("dog"); //循环dog信息 for(int i = 0; i < dogList.getLength(); i++){ //取得第i条dog的元素信息 Node dog = dogLisnt.item(i); Element elementd = (Element)dog; //取出第i dog的属性id值 String attrValue = element.getAttribute("id"); //取得dog标签下的所有标签 for(Node node = dog.getFirstChild(); node != null; node = node.getNextSibling()){ //判断该节点是否为 Element节点 if(node.getNodeType() == Node.ELMENT_NODE){ //取得第i个节点的节点名称 String name = node.getNodeName(); //取得第i个节点的节点下的第一个子节点的值 String value = node.getFirstChild().getNodeValue(); System.out.print(name+":"+value+"\t"); } } } }catch(ParserConfigurationException e){ e.printStackTrace(); }catch(FileNotFoundException e){ e.printStackTrace(); }catch(SAXException e){ e.printStackTrace(); }catch(IoException e){ e.printStackTrace(); }
- Java对XML解析(笔记)
- C#对XML的解析(笔记)
- 【学习笔记】JAVA之使用dom4j对xml文件解析
- java 解析 xml 笔记
- Java对Xml文件解析
- Java对XML的解析
- JAVA对XML多层次解析
- 【XML解析】(4)Java下使用DOM4J解析方式对XML文档进行解析
- Java解析XML的笔记
- java学习笔记--解析xml
- java使用dom4j包对XML解析
- Java对XML文档进行解析
- Java对XML文档进行解析---实例
- java--JAXP对xml文档的解析
- 【XML解析】(1)Java下使用JAXP中的DOM解析方式对XML文档进行解析
- java中使用JAXP解析xml(三)对XML文档中进行增、删、改
- Java之SAX 方式解析 XML(学习笔记)
- Java之JDOM方式解析XML文件(学习笔记)
- 说说家乡的互联网--洛南
- Python 猜数字
- 28号百度笔试经历
- computer log(转自百度)
- YII 框架 第九天 缓存之片段缓存
- Java对XML解析(笔记)
- django时区设置
- 创建数据库和表
- vim7.0配置python自动补全
- ubuntu 10.10 安装后apt-get **失效处理方法
- poj2002 squares 哈希 计算几何
- YII 框架 第九天(2)片段缓存的缓存依赖(实用)
- Oracle数据库的PL/SQL的流程控制语句
- [HDU 4112]Break the Chocolate[YY推公式]