练习数据
读取整个xml获取可操作对象
public static Document load(String filename) {Document document = null;try {SAXReader saxReader = new SAXReader();document = saxReader.read(new File(filename)); // 读取XML文件,获得document对象} catch (Exception ex) {ex.printStackTrace();}return document;}// 基本上是同一种方式 只是方法重载public static Document load(URL url) {Document document = null;try {SAXReader saxReader = new SAXReader();document = saxReader.read(url); // 读取XML文件,获得document对象} catch (Exception ex) {ex.printStackTrace();}return document;}
读取节点名称和文本
这里以获取title节点得名字和文本
// 获取根节点Element rootElement = document.getRootElement();// elementIterator()// 返回此元素中包含的元素的迭代器for (Iterator<Element> it = rootElement.elementIterator(); it.hasNext();) {// next() 一个迭代器的每一个元素 就是下一个 下一个的意思// .element("") 参数 标签名称 获得传入标签的element对象Element element = it.next().element("title");// 打印输出 元素名称和 元素文本值System.out.println("这一个元素: " + element.getName() + ", 元素的值是: "+ element.getText());}
通过这个代码获得了:
- 获取根节点(操作基本上都是基于根节点);
- 获取Element下面的Element可迭代对象
获取Element下面的Element对象 并且获取Element对象的 标签值 和 文本内容
标签属性操作 ( 以下代码都是接着上面代码书写的)
// 获取 Element对象属性对象 AttributeAttribute attribute=element.attribute("name");// 需要判断是否为空if(attribute != null){// 获取属性名称和 属性文本值String text = attribute.getText();String name = attribute.getName();System.out.println(name +": "+text);}System.out.println("------------------------------");// 一次性遍历所有属性Iterator attributeIterator = element.attributeIterator();while (attributeIterator.hasNext()){Attribute attribute1 = (Attribute) attributeIterator.next();System.out.println(attribute1.getName()+ ": "+ attribute1.getText());}// 给某一个元素设置 build 文本为veryElement addAttribute = element.addAttribute("build", "very");// xml转换为字符串输出String asXML = addAttribute.asXML();System.out.println(asXML);// 输出展示/*** 这一个元素: title, 元素的值是: 黑马52期就业快报* name: title123* ------------------------------* name: title123* home: zfHome* new: biebiu* <title build="very">程序员因写代码太乱被杀害</title>*/
通过这个代码获得了:
获取标签的属性对象(Attribute) (获取某一个或者迭代遍历)
- 获取属性的属性名和文本值
- 并且加了一个判断做了一个异常处理
- xml转为字符串输出
将修改好的xml写入新的文件夹
```java //设置编码 如果全部是英文则不需要设置 OutputFormat format = OutputFormat.createPrettyPrint(); format.setEncoding(“gbk”);
// 参数(path, outputformat) 也可以(path) XMLWriter writer = new XMLWriter(new FileWriter(“data/xml/output.xml”), format); writer.write(document); writer.close();
<a name="W7koF"></a>## 通过这个代码获得了:1. 写入文件1. 设置编码<a name="qt03o"></a># 修改节点属性 删除节点元素```java// 目前我只处理了修改value值 就是文本值Attribute attribute=element.attribute("name");attribute.setValue("ddd");// 修改节点内容Element element = it.next().element("title");element.setText("xxx");// 设置相应的内容// 删除节点element.remove(titleElement);// 记住 getxx 为取值 setxx 为设置值
通过代码获得
- 修改value值
- 修改节点Text
- 删除节点
Element常用方法 无代码演示
Element类
| getQName() | 元素的QName对象 | | —- | —- | | getNamespace() | 元素所属的Namespace对象 | | getNamespacePrefix() | 元素所属的Namespace对象的prefix | | getNamespaceURI() | 元素所属的Namespace对象的URI | | getName() | 元素的local name | | getQualifiedName() | 元素的qualified name | | getText() | 元素所含有的text内容,如果内容为空则返回一个空字符串而不是null | | getTextTrim() | 元素所含有的text内容,其中连续的空格被转化为单个空格,该方法不会返回null | | attributeIterator() | 元素属性的iterator,其中每个元素都是Attribute对象 | | attributeValue() | 元素的某个指定属性所含的值 | | elementIterator() | 元素的子元素的iterator,其中每个元素都是Element对象 | | element() | 元素的某个指定(qualified name或者local name)的子元素 | | elementText() | 元素的某个指定(qualified name或者local name)的子元素中的text信息 | | getParent | 元素的父元素 | | getPath() | 元素的XPath表达式,其中父元素的qualified name和子元素的qualified name之间使用”/“分隔 | | isTextOnly() | 是否该元素只含有text或是空元素 | | isRootElement() | 是否该元素是XML树的根节点 |
Demo4j 接口
| Attribute | 定义了 XML 的属性。 |
|---|---|
| Branch | 指能够包含子节点的节点。如XML元素(Element)和文档(Docuemnts)定义了一个公共的行为 |
| CDATA | 定义了 XML CDATA 区域 |
| CharacterData | 是一个标识接口,标识基于字符的节点。如CDATA,Comment, Text. |
| Comment | 定义了 XML 注释的行为 |
| Document | 定义了XML 文档 |
| DocumentType | 定义 XML DOCTYPE 声明 |
| Element | 定义XML 元素 |
| ElementHandler | 定义了Element 对象的处理器 |
| ElementPath | 被 ElementHandler 使用,用于取得当前正在处理的路径层次信息 |
| Entity | 定义 XML entity |
| Node | 为dom4j中所有的XML节点定义了多态行为 |
| NodeFilter | 定义了在dom4j 节点中产生的一个滤镜或谓词的行为(predicate) |
| ProcessingInstruction | 定义 XML 处理指令 |
| Text | 定义 XML 文本节点 |
| Visitor | 用于实现 Visitor模式 |
| XPath | 在分析一个字符串后会提供一个 XPath 表达式 |
