`
单眼皮大娘
  • 浏览: 113034 次
  • 性别: Icon_minigender_2
  • 来自: 上海
社区版块
存档分类
最新评论

xml Node 和 Element 的关系

    博客分类:
  • xml
 
阅读更多
在XML中Node是Element的父类,因此Element类型的节点可以转换成Node(面向对象中的向上转换)。但是看到文章中有人说Element是Node的部分,很费解。纠正下。
下面是一段测试代码:(向下转型)
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.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.w3c.dom.Text;
import org.xml.sax.SAXException;

public class OperateDOM {
	public static void main(String[] args) throws ParserConfigurationException, SAXException, IOException {
		File xmlFile = new File("D:/技术/xml/user.xml");
		DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
		DocumentBuilder builder = factory.newDocumentBuilder();
		Document document = builder.parse(xmlFile);
		Element userElement = document.createElement("user");
		Element namElement = document.createElement("name");
		Element ageElement = document.createElement("age");
		Text nameText = document.createTextNode("new龙准");
		Text ageText = document.createTextNode("23");
		namElement.appendChild(nameText);
		ageElement.appendChild(ageText);
		userElement.appendChild(namElement);
		userElement.appendChild(ageElement);
		userElement.setAttribute("id", "3");
		Element root = document.getDocumentElement();
		root.appendChild(userElement);
		//删除第一个user

	/*	NodeList users=root.getElementsByTagName("user");
		root.removeChild(users.item(0));*/
		
		//修改第一个user的age值
		Node firstUser = root.getElementsByTagName("user").item(0);
		Element firtuserElement = (Element) firstUser;
		Node name = firtuserElement.getElementsByTagName("name").item(0);
		Node age= firtuserElement.getElementsByTagName("age").item(0);
		age.getFirstChild().setNodeValue("24");
		System.out.println("第一个user节点的内容是:");
		System.out.println("name\t\t"+name.getFirstChild().getNodeValue());
		System.out.println("age\t\t"+age.getFirstChild().getNodeValue());
		
		
	}
}



有人说不能有Element专程Node,估计是胡说。测试下也是可以。
下面代码是源码部分(说明Elemnt 确实是Node的继承类)
public interface Element extends Node 

得出结论:两者可以互换(部分,常用的方法都可以)。
分享到:
评论

相关推荐

    Node.JS XML 解析 node-elementtree.zip

    `node-elementtree` 是对 Python 的 `ElementTree` 库的一个实现,它为 Node.JS 提供了方便的 XML 解析和操作功能。这个库的设计理念是简单易用,同时也保留了 XML 文档的树形结构,使得处理复杂的 XML 文档变得直观...

    java解析XML Node与Element的区别(推荐)

    在Java中,解析XML文档时,常常会遇到Node和Element这两个概念,它们是XML DOM(文档对象模型)中两个核心的接口,分别代表了XML文档的不同层级和类型。理解它们的区别对于有效地操作XML至关重要。 首先,Node是...

    XML文件追加Node节点

    在XML文件中,"Node"是构成XML文档的基本元素,包括元素(Element)、属性(Attribute)、文本(Text)、注释(Comment)、处理指令(Processing Instruction)等类型。本篇将深入探讨如何在XML文件中追加Node节点,...

    rlexception: invalid roslaunch xml syntax: no element found: lin

    在ROS(Robot Operating System)开发过程中,遇到`rlexception: invalid roslaunch xml syntax: no element found: line 1, column 0`这样的错误信息时,表明当前的`.launch`文件存在XML语法错误。具体来说,可能是...

    Python ElementTree保存xml保留属性原始顺序补丁

    Python自带的ElementTree保存xml时不会保留节点属性的原始顺序,会重新排序。 这里提供一个Monkey Patch使ElementTree保存xml时能够保留节点属性的原始顺序,附有sample。

    pugixml读写XML示例

    pugixml库主要包含两个核心类:`xml_document`和`xml_node`。`xml_document`代表整个XML文档,而`xml_node`表示文档中的一个节点,可以是元素、属性、文本等。 读取XML文件: 1. **初始化pugixml库**:在使用pugi...

    Xml 应用 和用xml存储数据 用java解析

    XML文档由一系列元素构成,每个元素都由开始标签、内容(如果有的话)和结束标签组成,例如`<element>content</element>`。元素可以嵌套,形成层次结构。此外,XML支持属性,如`<element attr="value">`,用于附加...

    xml实例在C#.net中操作XML实例教程

    XmlElement nodeElement = xmlDocument.CreateElement("Node"); // 设置属性 nodeElement.SetAttribute("genre", "李赞红"); nodeElement.SetAttribute("ISBN", "2-3631-4"); // 添加子元素 XmlElement ...

    用VB 6操作XML文件

    用VB操作XML '生成一个XML DOMDocument对象 Set xmlDOMDocument = ... Set Added_Element = xmlDOMDocument.CreateNode(NODE_ELEMENT, "Nodes", "") Added_Element.Text = "" Root_Node.appendChild Added_Element

    java写XML文件和读取XML文件

    XML(eXtensible Markup Language)是一种用于存储和传输数据的标记语言,广泛应用于软件配置、数据交换、Web服务等领域。在Java编程中,处理XML文件是常见的需求,包括创建XML文件、读取XML文件以及解析XML内容。...

    python xml.etree.ElementTree遍历xml所有节点实例详解

    Python 中处理 XML 数据的一个常用库是 `xml.etree.ElementTree`,该库提供了一种简单而有效的方式来解析和创建 XML 数据。 #### 二、环境搭建与准备 确保你的环境中已经安装了 Python,由于 `xml.etree.Element...

    配置文件Xml XMl公共类

    XmlHelper.Insert(path, node, element, attribute, value); ``` #### 五、总结 通过对配置文件XML及其公共类的深入解析,我们可以看到XML在数据存储和传输中的灵活性和强大功能。利用像`XmlHelper`这样的封装类...

    java 解析xml 多级

    Element element = (Element) node; // 获取属性、文本内容等 } } ``` 5. 获取元素属性和文本: 对于每个元素节点,可以使用`getAttribute()`获取属性值,`getTextContent()`获取文本内容。 ```java String ...

    Java与XML联合编程之DOM篇.rar_dom xml_dom xml java_java xml

    DOM(Document Object Model)是W3C制定的一种标准,它为XML文档提供了一个树形结构,使得程序员可以方便地访问和操作XML文档的每一个元素。本教程将深入探讨Java中使用DOM模型解析XML文件的方法。 首先,我们需要...

    xml解析器,xml解析代码例子

    XML文档遵循严格的层次结构,即嵌套关系,每个元素都可包含零个或多个子元素。 XML解析器的主要任务是读取XML文档并将其转换为应用程序可以处理的数据结构。有两种主要的解析方式:DOM(Document Object Model)和...

    Qt读写Xml文件,QTreeWidget显示Xml和导出Xml文件

    在Qt框架中,XML文件是一种常见的数据存储格式,它提供了结构化的数据表示方式,便于程序读取和写入。QTreeWidget是Qt提供的一种用于显示树状结构数据的控件,它可以很好地展示XML文件的层次结构。QXml是Qt中的XML...

    halcon XML文件处理函数,halcon函数手册,Halcon

    3. `gen_xml_element`:此函数用于创建XML元素,包括元素名称、属性和子元素,构建XML文档的结构。 4. `append_xml_element`:这个函数用于向已存在的XML元素添加子元素,有助于构建复杂的XML树形结构。 二、使用...

    java_java写XML文件和读取XML文件

    XML(eXtensible Markup Language)是一种用于存储和传输数据的标记语言,广泛应用于软件配置、数据交换和文档存储等领域。在Java编程中,处理XML文件是常见的需求,包括读取XML文件的内容以及将数据写入XML文件。...

    Qt读写Xml文件(QTreeWidget加载显示Xml文件内容;QTreeWidget项导出保存为Xml)

    这通常涉及遍历QTreeWidget的所有项,根据它们的层次关系构建一个新的XML文档。每个QTreeWidgetItem可以映射到一个XML元素,其子项对应于子元素。以下是一个基本的导出函数: ```cpp void saveTreeWidgetAsXml...

    xml解析 dom方式 例子和讲解

    XML(eXtensible Markup Language)是一种用于存储和传输数据的标记语言,它具有结构化、自解释的特点,广泛应用于Web服务、配置文件、数据交换等领域。DOM(Document Object Model)是XML解析的一种常见方式,它将...

Global site tag (gtag.js) - Google Analytics