A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

[学习交流] java培训之Document

© zzj123 黑马粉丝团   /  2017-6-13 10:47  /  2239 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

Document操作 (*****)

1 遍历students.xml
  涉及的相关方法:
Element getRootElement():Document的方法,用来获取根元素;
List elements():Element的方法,用来获取所有子元素;
String attributeValue(String name):Element的方法,用来获取指定名字的属性值;
Element element(String name):Element的方法,用来获取第一个指定名字的子元素;
Element elementText(String name):Element的方法,用来获取第一个指定名字的子元素的文本内容。

分析步骤:
获取Document对象;
获取root元素;
获取root所有子元素
遍历每个student元素;
打印student元素number属性;
打印student元素的name子元素内容;
打印student元素的age子元素内容;
打印student元素的sex子元素内容。

2 给学生元素添加<score>子元素
涉及的相关方法:
Element addElement(String name):Element的方法,为当前元素添加指定名字子元素。返回值为新建元素对象;
setText(String text):Element的方法,为当前元素设置文本内容。

分析步骤:
获取Document对象;
获取root对象;
获取root所有子元素;
遍历所有学生子元素;
创建<score>元素,为<score>添加文本内容;
把<score>元素添加到学生元素中。
保存Document对象。

3 为张三添加friend属性,指定为李四学号
涉及方法:
addAttribute(String name, String value):Element的方法,为当前元素添加属性。

分析步骤:
获取Document对象;
获取root对象;
获取root所有子元素;
创建两个Element引用:zhangSanEle、liSiEle,赋值为null;
遍历所有学生子元素;
如果zhangSanEle和liSiEle都不是null,break;
判断当前学生元素的name子元素文本内容是zhangSan,那么把当前学生元素赋给zhangSanEle;
判断当前学生元素的name子元素文本内容是liSi,那么把当前学生元素赋给liSiEle。
判断zhangSanEle和liSiEle都不为null时:
获取liSiEle的number属性。
为zhangSanEle添加friend属性,属性值为liSi的number属性值。
保存Document对象。

4 删除number为ID_1003的学生元素
涉及方法:
boolean remove(Element e):Element和Document的方法,移除指定子元素;
Element getParent():获取父元素,根元素的父元素为null。

分析步骤:
获取Document对象;
获取root对象;
获取root所有子元素;
遍历所有学生子元素;
判断当前学生元素的number属性是否为ID_1003;
获取当前元素的父元素;
父元素中删除当前元素;
保存Document对象.

5 通过List<Student>生成Document并保存
涉及方法:
DocumentHelper.createDocument():创建Document对象;
DocumentHelper.createElement(String name):创建指定名称的Element元素。


分析步骤:
创建Document对象;
为Document添加根元素<students>;
循环遍历学生集合List<Student>;
把当前学生对象转换成Element元素;
把Element元素添加到根元素中;
保存Document对象。

把学生转换成Element步骤分析:
创建Element对象;
为Element添加number属性,值为学生的number;
为Element添加name子元素,文本内容为学生的name;
为Element添加age子元素,文本内容为学生的age;
为Element添加sex子元素,文本内容为学生的sex。

6 新建赵六学生元素,插入到李四之前
涉及方法:
int indexOf(Node node):Branch的方法,查找指定节点,在当前Branch的子节点集合中的下标位置。

分析步骤:
创建赵六学生对象;
通过学生对象创建赵六学生元素;
通过名称查找李四元素;
查看李四元素在其父元素中的位置;
获取学生子元素List;
将赵六元素插入到List中。

通过名字查找元素:
获取Document;
获取根元素;
获取所有学生元素;
遍历学生元素;
获取学生元素name子元素的文本内容,与指定名称比较;
返回当前学生元素。

7 其它方法介绍
Node方法:
String asXML():把当前节点转换成字符串,如果当前Node是Document,那么就会把整个XML文档返回;
String getName():获取当前节点名字;Document的名字就是绑定的XML文档的路径;Element的名字就是元素名称;Attribute的名字就是属性名;
Document getDocument():返回当前节点所在的Document对象;
short getNodeType():获取当前节点的类型;
String getNodeTypeName():获取当前节点的类型名称,例如当前节点是Document的话,那么该方法返回Document;
String getStringValue():获取当前节点的子孙节点中所有文本内容连接成的字符串;
String getText():获取当前节点的文本内容。如果当前节点是Text等文本节点,那么本方法返回文本内容;例如当前节点是Element,那么当前节点的内容不是子元素,而是纯文本内容,那么返回文本内容,否则返回空字符串;
void setDocument(Document doc):给当前节点设置文档元素;
void setParent(Element parent):给当前节点设置父元素;
void setText(String text):给当前节点设置文本内容;


Branch方法:
void add(Element e):添加子元素;
void add(Node node):添加子节点;
void add(Comment comment):添加注释;
Element addElement(String eleName):通过名字添加子元素,返回值为子元素对象;
void clearContent():清空所有子内容;
List content():获取所有子内容,与获取所有子元素的区别是,<name>liSi</name>元素没有子元素,但有子内容;
Element elementById(String id):如果元素有名为“ID”的属性,那么可以使用这个方法来查找;
int indexOf(Node node):查找子节点在子节点列表中的下标位置;
Node node(int index):通过下标获取子节点;
int nodeCount():获取子节点的个数;
Iterator nodeIterator():获取子节点列表的迭代器对象;
boolean remove(Node node):移除指定子节点;
boolean remove(Commont commont):移除指定注释;
boolean remove(Element e):移除指定子元素;
void setContent(List content) :设置子节点内容;


Document方法:
Element getRootElement():获取根元素;
void setRootElement():设置根元素;
String getXmlEncoding():获取XML文档的编码;
void setXmlEncoding():设置XML文档的编码;


Element方法:
void add(Attribute attr):添加属性节点;
void add(CDATA cdata):添加CDATA段节点;
void add(Text Text):添加Text节点;
Element addAttribute(String name, String value):添加属性,返回值为当前元素本身;
Element addCDATA(String cdata):添加CDATA段节点;
Element addComment(String comment):添加属性节点;
Element addText(String text):添加Text节点;
void appendAttributes(Element e):把参数元素e的所有属性添加到当前元素中;
Attribute attribute(int index):获取指定下标位置上的属性对象;
Attribute attribute(String name):通过指定属性名称获取属性对象;
int attributeCount():获取属性个数;
Iterator attributeIterator():获取当前元素属性集合的迭代器;
List attributes():获取当前元素的属性集合;
String attributeValue(String name):获取当前元素指定名称的属性值;
Element createCopy():clone当前元素对象,但不会copy父元素。也就是说新元素没有父元素,但有子元素;
Element element(String name):获取当前元素第一个名称为name的子元素;
Iterator elementIterator():获取当前元素的子元素集合的迭代器;
Iterator elementIterator(String name):获取当前元素中指定名称的子元素集合的迭代器;
List elements():获取当前元素子元素集合;
List elements(String name):获取当前元素指定名称的子元素集合;
String elementText(String name):获取当前元素指定名称的第一个元素文件内容;
String elementTextTrime(String name):同上,只是去除了无用空白;
boolean isTextOnly():当前元素是否为纯文本内容元素;
boolean remove(Attribute attr):移除属性;
boolean remove(CDATA cdata):移除CDATA;
boolean remove(Text text):移除Text。


DocumentHelper静态方法介绍:
static Document createDocument():创建Dcoument对象;
static Element createElement(String name):创建指定名称的元素对象;
static Attribute createAttrbute(Element owner, String name, String value):创建属性对象;
static Text createText(String text):创建属性对象;
static Document parseText(String text):通过给定的字符串生成Document对象;

1 个回复

倒序浏览
6666666666666666666
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马