`
dianziermu
  • 浏览: 140651 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

遍历XML 分享修改删除

    博客分类:
  • XML
阅读更多

这两天光折腾xml的操作了。因为xml已知,所以觉得多套几个for就完了,可昨天晚上脑袋被套住出不来了。有时候实在没思路的时候,睡觉或许是个比较好的选择,今天一下茅塞顿开,还是写了个迭代,虽然现在仍然不能领会迭代的精髓,但还是想先和大家分享成果。代码如下:

依然用的是dom4j

 

 

XmlTree.java

 

package com.dianzi.test;

import java.io.*;
import java.util.*;

import org.dom4j.*;
import org.dom4j.io.*;

public class XmlTree {

 /**
  * @param args
  */
 public static void main(String[] args) {
  File file = new File("./src/com/dianzi/test/Log-Sample01.xml");

  SAXReader saxReader = new SAXReader();
  saxReader.setValidation(false);// 不验证xml文件内的dtd

  try {
   Document doc = saxReader.read(file);
   System.out.println(doc);
   XmlTree xml = new XmlTree();
   xml.printXMLTree(doc);

  } catch (Exception e) {
   e.printStackTrace();
  }

 }

 public void printXMLTree(Document doc) {
  Element root = doc.getRootElement();
  List arr = new ArrayList();
  List result = printElement(root, 1, arr);// 根节点深度为1

  return;
 }

 /**
  * 遍历标签元素的迭代方法
  *
  * @param element
  *            标签元素
  * @param level
  *            元素深度
  * @param resultList
  *            遍历的结果
  * @return 返回resultList
  */
 @SuppressWarnings("unchecked")
 private List printElement(Element element, Integer level, List resultList) {

  /**
   * 每一个tempList包含四个元素
   *
   * @get(0):记录元素名称,即打印<A>B</A>的A
   * @get(1):打印该标签的值,即打印<A>B</A>的B
   * @get(2):元素深度
   * @get(3):元素的属性及对应值列表,即<A c=“d” >B</A>=》attrObjList.get(0)存c
   *                       =》attrObjList.get(1)存d
   */
  List tempList = new ArrayList(4);
  tempList.add(element.getQualifiedName());// 记录元素名称,即打印<A>B</A>的A
  tempList.add(element.getText());// 打印该标签的值,即打印<A>B</A>的B
  // 打印标签值不能放在下面的if中,可能第二层就有值,如<root><A>B</A></root>
  tempList.add(level);// 元素深度;

  Iterator eleAttriItor = element.attributeIterator();
  if (eleAttriItor.hasNext()) {// 元素有参数的,遍历参数的个数
   List attrObjList = new ArrayList(element.attributes().size());
   while (eleAttriItor.hasNext()) {
    Attribute eleAttr = (Attribute) eleAttriItor.next();

    List attrObj = new ArrayList(2);
    attrObj.add(eleAttr.getName());
    attrObj.add(eleAttr.getValue());
    attrObjList.add(attrObj);
   }
   tempList.add(attrObjList);
  } else {
   // 没参数的
  }
  resultList.add(tempList);

  // 迭代
  for (Iterator iter = element.elementIterator(); iter.hasNext();) {
   Element sub = (Element) iter.next();
   printElement(sub, level+1, resultList);//深度加一
  }
  return resultList;
 }

}
 

 

 

Log-Sample01.xml

 

<?xml version="1.0" encoding="gb2312"?>
<students>
    <student age="25"  leader="学院领导"><!--如果没有age属性,默认的为20-->
     男,1982年生,硕士,现就读于北京邮电大学
    </student>
    <student>
        <name>cwb</name>
        <college leader="学院领导">PC学院</college><!--如果没有leader属性,默认的为leader-->
        <telephone>62358888</telephone>
        <notes>男,1987年生,硕士,现就读于中国农业大学</notes>
    </student>
    <student age="45">
        <name>xxxxx</name>
        <college leader="">xxx学院</college>
        <telephone>66666666</telephone>
        <notes>注视中,注释中</notes>
    </student>
    <student age="">
        <name>lxx</name>
        <college>yyyy学院</college>
        <telephone>88888888</telephone>
        <notes>注视中111,注释中222</notes>
    </student>
</students>
 

 

 

分享到:
评论

相关推荐

    dom遍历所有xml节点,并且重新生成xml

    在本主题“DOM遍历所有XML节点,并且重新生成XML”中,我们将深入探讨如何利用DOM API遍历XML文档的所有节点,并根据需求重新构建XML文档。 首先,让我们了解XML的基本结构。XML(eXtensible Markup Language)是一...

    遍历xml文件的动态链接库和调用库的例程(附库源码)

    2. **遍历XML节点**:库提供了遍历XML文件所有节点的功能,这是通过递归地访问XML元素的子节点来实现的。例如,可以使用`FirstChildElement()`和`NextSiblingElement()`方法来遍历所有的子元素。 3. **添加、删除和...

    C#对XML文件进行增删查改,并提供了遍历XMl文件信息的方法

    C#对XML文件进行增删查改,并提供了遍历XMl文件信息的方法包括1.生成xml文件、2.遍历xml文件的节点信息、3.修改xml文件的节点信息、4.向xml文件添加节点信息...删除指定xml文件的节点信息、6、嵌套循环遍历xml信息节点

    利用CMakup类实现对XML解析,实现遍历,添加,修改,删除

    遍历XML文档通常涉及对XML树结构的递归访问。你可以从根节点开始,逐层访问每个节点及其子节点。CMakup类的`GetFirstChild`和`GetNextSibling`函数在这里非常有用,它们分别用于获取当前节点的第一个子节点和下一个...

    ajax遍历xml文档的方法

    使用W3C DOM,开发者可以遍历XML文档中的各个元素,并对其进行读取、修改或删除。DOM解析器把XML文档转换成树状结构(DOM tree),每个节点代表XML文档中的一个部分。通过节点可以进行一系列操作,比如访问节点、...

    处理及遍历XML文档DOM元素属性及方法整理

    这些属性和方法是DOM的核心组成部分,它们使得开发者能够方便地构建、修改和查询XML文档。通过结合使用这些工具,可以实现诸如检索特定元素、遍历文档结构、创建新元素以及更新现有元素的值等多种功能。在实际开发中...

    易语言模块 XMLDOM 解析 构造 获取 更改 添加 删除 遍历元素 格式化XML

    换句话说:XML DOM 是用于获取、更改、添加或删除 XML 元素的标准。 模块简介: 1、XMLDOMDocument类: XML对象文档 -&gt;操作创建或读写(元素、节点、属性、注释)等 2、IXMLDOMNode类:每个元素或节点基本都会有的...

    Qt5 XML文件的解析,增删改查节点。

    解析完成后,你可以通过QDomDocument的元素方法访问XML文档的根节点,并遍历整个文档结构。QDomElement类表示XML文档中的元素节点,而QDomNode类是所有节点类型的基类,包括元素、文本、注释等。 接下来,我们来看...

    VDT-XML解析xml文件,修改、查找xml文件。

    3. **使用VDT-XML修改XML** - 添加、删除和更新元素:VDT-XML提供了API,允许开发者添加新元素,删除现有元素,或者修改元素的属性和文本内容。 - 遍历XML树:通过迭代器或递归函数,可以遍历XML树并进行修改。 -...

    c#读取xml文件增加结点删除节点并在listview中显示xml文件内容

    // 遍历XML文件 XmlNodeList nodeList = xmlDoc.GetElementsByTagName("*"); foreach (XmlNode node in nodeList) { Console.WriteLine(node.Name + ": " + node.InnerText); } ``` ### 增加XML节点 在C#中,我们...

    PB 解析XML (代码案例)

    7. **XML DOM操作**:如果使用XMLDOMDocument,还可以进行更复杂的DOM操作,如添加、修改或删除XML节点。例如,使用`CreateElement`, `AppendChild`等方法。 8. **保存XML**:完成数据处理后,可能需要将修改后的...

    对xml文件的修改,解析,删除源码

    # 遍历XML结构 for child in root: print(child.tag, child.attrib) # 获取特定节点的值 value = root.find('.//someTag').text print('Value:', value) ``` 这段代码解析XML文件,遍历所有顶级节点,并打印它们...

    xml文件进行修改,新增,删除,插入操作

    XML 文件操作(修改、新增、删除、插入) XML 文件(Extensible Markup Language)是一种常用的数据交换格式,广泛应用于数据存储、网络通信等领域。在 C# 中,操作 XML 文件可以使用 XmlDocument 类,该类提供了...

    tinyxml与tinyxml2

    2. **遍历XML树**:通过`FirstChildElement()`, `NextSiblingElement()`, `Attribute()`等方法遍历元素和属性。 3. **操作XML**:创建新元素、添加或删除元素和属性,修改文本内容。 4. **保存XML**:调用`...

    VS C++递归法读XML

    总之,C++中使用CMarkup库通过递归法遍历XML文档,可以高效且灵活地处理XML数据。理解XML的结构以及CMarkup库的API,对于进行XML解析和操作至关重要。这种方法虽然在网上可能不常见,但对于理解和掌握XML处理技巧...

    xml修改工具 dom4j

    本文将深入探讨dom4j库在XML修改中的应用。 首先,dom4j库的核心概念是Document对象,它代表了一个完整的XML文档。通过DOM4J,我们可以方便地创建和操作Element、Attribute、Namespace等XML元素。以下是一些主要...

    已编译好的tinyxml2库.rar

    3. **遍历XML**:通过`FirstChildElement`、`NextSiblingElement`等方法遍历XML树,访问和修改元素及属性。 4. **保存修改**:如果修改了XML,可以调用`SaveFile`方法将更改写回文件。 5. **释放资源**:操作完成...

    浅析PHP对XML文档的基本操作.pdf

    本文档旨在介绍 PHP 对 XML 文档的基本操作,包括创建 XML 文档、遍历 XML 文档、添加 XML 数据、修改 XML 数据和删除 XML 数据。 创建 XML 文档 要创建 XML 文档,需要使用 PHP 的 DOMDocument 类。首先,创建一...

    删除XML根节点下的某子节点

    在处理XML文档时,有时我们需要根据需求删除特定的节点。XML是一种可扩展标记语言,用于存储和传输数据,它的结构化特性使得数据组织有序且易于处理。本文将深入讲解如何在编程环境中删除XML根节点下的特定子节点,...

    xml文件树形显示,可添加删除修改xml节点

    通过遍历这个树形结构,我们可以访问和修改XML文档的任何部分。 "可添加删除修改xml节点"则意味着我们需要具备对DOM树进行操作的能力。添加节点涉及创建新的DOM节点,并将其插入到适当的位置;删除节点则需要找到...

Global site tag (gtag.js) - Google Analytics