-
java用dom更新xml的问题,怎么在子节点下添加节点? 5
有原始xml如下:
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <students> <student> <name sn="03" sn2="0322"/> </student> </students>
我想要得到修改后的结果为:
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <students> <student> <name sn="03" sn2="0322"/> <name sn="04" sn2="0422"/> </student> </students>
我的代码为:
public static void main(String[] args) { DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); try { DocumentBuilder db = dbf.newDocumentBuilder(); Document doc = db.parse("D:/students.xml"); Element eltName = doc.createElement("name"); Attr attr = doc.createAttribute("sn"); attr.setValue("04"); Attr attr2 = doc.createAttribute("sn2"); attr2.setValue("0422"); eltName.setAttributeNode(attr); eltName.setAttributeNode(attr2); Element eltRoot=doc.getDocumentElement(); eltRoot.appendChild(eltName); doc2XmlFile(doc, "D:/students.xml"); } catch (ParserConfigurationException e) { e.printStackTrace(); } catch (SAXException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } /** * 将Document对象修改后写入到xml里面 * @param document Document对象 * @param filename xml文件路径 * @return */ public boolean doc2XmlFile(Document document, String filename) { boolean flag = true; try { /** 将document中的内容写入文件中 */ TransformerFactory tFactory = TransformerFactory.newInstance(); Transformer transformer = tFactory.newTransformer(); /** 编码 */ transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8"); DOMSource source = new DOMSource(document); StreamResult result = new StreamResult(new File(filename)); transformer.transform(source, result); } catch (Exception ex) { flag = false; System.out.println("更新" + filename + "出错:" + ex); log.error("更新" + filename + "出错:" + ex); ex.printStackTrace(); } return flag; }
这样得到的结果为:
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <students> <student> <name sn="03" sn2="0322"/> </student> <name sn="04" sn2="0422"/> </students>
弄了一天了也没能把添加的name节点放到student节点下面,请教各位大侠了!
2012年11月21日 23:10
3个答案 按时间排序 按投票排序
-
采纳的答案
还有一种更好的方法,不需要修改xml文件,
把Element eltRoot=doc.getDocumentElement(); eltRoot.appendChild(eltName);
改成:
Node stNode = doc.getElementsByTagName("student").item(0); stNode.appendChild(eltName);
2012年11月22日 09:16
-
你是用这个或者参照修改一下你自己的。
这个需要几个commons的jar包。
@Test
public void testXml() throws Exception{
String fileStr = FileUtils.readFileToString(new File("./test/1.xml"));
Document doc = DocumentHelper.parseText(fileStr);
Element root = doc.getRootElement();
Element node = (Element)root.selectSingleNode("/students/student");
node.addElement("name").addAttribute("sn", "02").addAttribute("sn2", "044");
FileUtils.writeStringToFile(new File("E:\\1.xml"), doc.asXML());
}2012年11月22日 09:32
-
1.给xml文件里面的student先附一个id
<student id="st">
2.程序里通过doc.getElementById方法取到student节点,然后再appendChild就可以了
Element eltRoot= doc.getElementById("st");
eltRoot.appendChild(eltName);2012年11月22日 07:47
相关推荐
标题“java_dom解析xml xml java”表明了本文档的主题是关于如何使用Java中的DOM技术来解析XML文件。 #### 描述分析 描述中提到这是一个适合新手入门的内容,并给出了一个简单的XML示例。该XML文档包含了一个`...
在Java中,DOM API被包含在`javax.xml.parsers`和`org.w3c.dom`这两个包中。 DOM API的核心类包括`DocumentBuilderFactory`、`DocumentBuilder`和`Document`。首先,`DocumentBuilderFactory`用于创建`...
在本教程中,我们将深入探讨如何使用Java DOM来操作XML文件。 1. XML文档加载: 要开始操作XML,首先需要将其加载到内存中。使用`DocumentBuilderFactory`和`DocumentBuilder`类可以完成这个任务。以下是一个基本...
Java 中有多种方法可以解析 XML 文档,其中最常用的两种方法是使用基于事件的 XML 简单 API(Simple API for XML,SAX)和基于树和节点的文档对象模型(Document Object Model,DOM)。Sun 公司提供了 Java API for ...
在本教程中,我们将深入探讨如何使用DOM4J解析(读取)XML节点数据,不受XML层级的限制。 首先,确保你已经下载了必要的依赖,即DOM4J库。通常,这将是一个名为`dom4j-x.x.x.jar`的文件,其中x.x.x是DOM4J的版本号...
在Java中,可以使用javax.xml.parsers.DocumentBuilderFactory和org.w3c.dom.Document类来实现DOM解析。 XPath是一种在XML文档中查找信息的语言,它是DOM的重要补充。XPath通过路径表达式来定位XML文档中的元素和...
在本教程中,我们将深入探讨如何使用DOM4J来执行基本的XML操作,包括添加元素、修改元素、删除元素以及获取元素节点。 1. **添加元素节点** 在DOM4J中,添加元素节点通常涉及创建一个新的`Element`对象,然后将其...
本文将深入讲解如何在编程环境中删除XML根节点下的特定子节点,以满足实际应用的需求。 首先,要删除XML根节点下的子节点,我们需要理解XML的基本结构。一个XML文档通常有一个顶级的根元素,根元素下可以包含多个子...
需要注意的是,在使用 DOM 解析 XML 文件时,需要考虑 XML 文件的大小和复杂度,以免出现内存溢出的问题。此外,我们也可以使用其他解析 XML 文件的方法,如 SAX 解析和 StAX 解析等等,每种方法都有其优缺点,需要...
在Java中,DOM4J提供了一种灵活的方式来操作XML文档,包括解析、遍历、修改节点以及序列化回XML字符串。 **DOM4J的基本概念:** 1. **Element(元素)**:XML文档中的每一个标签都是一个Element,它包含属性、文本...
在给定的代码片段中,可以看到一系列关于XML节点操作的方法,包括查询所有节点、删除子节点、添加子节点以及更新子节点。下面分别对这些方法进行详细解析。 ##### 1. 查询所有节点(`selectAllNodes()`) - **创建...
在Java中,要使用DOM4J,首先需要添加DOM4J的依赖。如果你使用的是Maven项目,可以在pom.xml文件中添加以下依赖: ```xml <groupId>org.dom4j <artifactId>dom4j <version>2.1.3 ``` 接下来,我们将介绍如何...
### Java中使用DOM解析XML详解 #### 一、引言 在Java开发中,解析XML是一种常见的需求。XML(Extensible Markup Language,可扩展标记语言)作为一种数据存储和传输的标准格式,在不同系统间的数据交换中扮演着...
Java DOM(Document Object Model)是Java中用于处理XML文档的标准API,它允许程序对XML文档进行结构化的访问和修改。DOM将XML文档解析为一棵由节点组成的树形结构,每个节点都代表XML文档的一部分,如元素、属性、...
在Java编程语言中,DOM(Document Object Model)解析是一种处理XML文档的方法,它将XML文件加载到内存中形成一个树形结构,允许开发者通过对象模型来遍历和修改XML数据。DOM解析器提供了对XML文档的完整访问,使得...
在本文中,我们将深入探讨dom4j的核心概念和使用方法,以及如何在Java项目中集成和应用它。 1. **DOM4J简介** DOM4J是一个基于Java的XML API,它扩展了标准的DOM模型,增加了如路径导航、事件处理和XPath支持等...
本教程将详细讲解如何在Java中解析XML文件,获取节点内容,且无需引入额外的jar包,如DOM、SAX或StAX解析器。 首先,Java标准库提供了`java.io`和`javax.xml.parsers`包,它们包含了基本的XML处理能力。这里我们将...
在IT行业中,DOM(Document Object Model)是一种标准的XML(eXtensible Markup ...在实际应用中,需要注意DOM解析整个XML文档会消耗较多资源,对于大型XML文件,可以考虑使用SAX或StAX等流式解析器作为替代方案。
1. **Element(元素)**:XML文档中的每一个节点,比如`<tag>`,在DOM4J中表现为Element对象。 2. **Attribute(属性)**:元素上的键值对,如`<tag attr="value">`,在DOM4J中表现为Attribute对象。 3. **Text...
例如,如果我们要向XML文件中添加一个新的学生条目,可以先创建一个`Element`表示学生,再将其作为子节点添加到相应的父元素。 2. **删除元素**:删除元素需要找到要删除的`Element`,然后调用其`removeChild`方法...