-
DOM创建xml文档如何处理空标记问题5
现在遇到了一个非常棘手的问题在创建xml报文发送给系统处理时系统只认类似如下的xml标记:<stream></stream>
而不认识<stream/>
标记。在xml中都是空标记可是变态的系统部人遇到就报错。我使用dom生成的xml文档如何才能生成<stream></stream>
标记呢?希望得到大家的帮忙。这是我的代码:package com.tp.test; import java.io.ByteArrayOutputStream; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.transform.Transformer; import javax.xml.transform.TransformerFactory; import javax.xml.transform.dom.DOMSource; import javax.xml.transform.stream.StreamResult; import org.w3c.dom.Document; import org.w3c.dom.Element; /** * * <p>Title: DomCreateXml.java</p> * * <p>Description: </p> * * <p>Date: Dec 3, 2013</p> * * <p>Time: 6:24:54 PM</p> * * <p>Copyright: Copyright (c) 2013</p> * * <p>Company: zhongpin</p> * * @author zhangyq * @version 2.0 * * <p>============================================</p> * <p>Modification History * <p>Mender: </p> * <p>Date: </p> * <p>Reason: </p> * <p>============================================</p> */ public class DomCreateXml { /** * @param args * @throws Exception */ public static void main(String[] args) throws Exception { DocumentBuilderFactory localDocumentBuilderFactory = DocumentBuilderFactory .newInstance(); DocumentBuilder localDocumentBuilder = localDocumentBuilderFactory .newDocumentBuilder(); Document localDocument = localDocumentBuilder.newDocument(); Element rootEle = localDocument.createElement("stream"); localDocument.appendChild(rootEle); System.out.println(xmlDoc(localDocument)); } private static String xmlDoc(Document document)throws Exception{ //首先创建转化工厂 TransformerFactory transFactory=TransformerFactory.newInstance(); //创建Transformer,它能够将源树转换为结果树 Transformer transformer = transFactory.newTransformer(); //接下来设置输出属性 transformer.setOutputProperty("indent", "yes"); DOMSource source =new DOMSource(document); StreamResult result = new StreamResult(); //1.将XML字符串输出到String字符串中 ByteArrayOutputStream baos = new ByteArrayOutputStream(); result.setOutputStream(baos); transformer.transform(source, result);//后, return baos.toString(); } }
输出的结果为:<?xml version="1.0" encoding="UTF-8" standalone="no"?> <stream/>
我想要的结果为:<?xml version="1.0" encoding="UTF-8" standalone="no"?> <stream></stream>
谢谢大家指点!!!2013年12月03日 18:27
1个答案 按时间排序 按投票排序
-
在代码54行添加以下代码:
rootEle.appendChild(localDocument.createTextNode(""));
具体代码如下:package com.tp.test; import java.io.ByteArrayOutputStream; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.transform.Transformer; import javax.xml.transform.TransformerFactory; import javax.xml.transform.dom.DOMSource; import javax.xml.transform.stream.StreamResult; import org.w3c.dom.Attr; import org.w3c.dom.DOMException; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.NamedNodeMap; import org.w3c.dom.Node; import org.w3c.dom.NodeList; import org.w3c.dom.TypeInfo; import org.w3c.dom.UserDataHandler; /** * * <p>Title: DomCreateXml.java</p> * * <p>Description: </p> * * <p>Date: Dec 3, 2013</p> * * <p>Time: 6:24:54 PM</p> * * <p>Copyright: Copyright (c) 2013</p> * * <p>Company: zhongpin</p> * * @author zhangyq * @version 2.0 * * <p>============================================</p> * <p>Modification History * <p>Mender: </p> * <p>Date: </p> * <p>Reason: </p> * <p>============================================</p> */ public class DomCreateXml { /** * @param args * @throws Exception */ public static void main(String[] args) throws Exception { DocumentBuilderFactory localDocumentBuilderFactory = DocumentBuilderFactory .newInstance(); DocumentBuilder localDocumentBuilder = localDocumentBuilderFactory .newDocumentBuilder(); Document localDocument = localDocumentBuilder.newDocument(); Element rootEle = localDocument.createElement("stream"); localDocument.appendChild(rootEle); // Element memberList = localDocument.createElement("m"); rootEle.appendChild(localDocument.createTextNode("")); System.out.println(xmlDoc(localDocument)); } private static String xmlDoc(Document document)throws Exception{ //首先创建转化工厂 TransformerFactory transFactory=TransformerFactory.newInstance(); //创建Transformer,它能够将源树转换为结果树 Transformer transformer = transFactory.newTransformer(); //接下来设置输出属性 transformer.setOutputProperty("indent", "yes"); DOMSource source =new DOMSource(document); StreamResult result = new StreamResult(); //1.将XML字符串输出到String字符串中 ByteArrayOutputStream baos = new ByteArrayOutputStream(); result.setOutputStream(baos); transformer.transform(source, result);//后, return baos.toString(); } }
最后运行结果:
<?xml version="1.0" encoding="UTF-8"?>
<stream></stream>
2013年12月18日 16:36
相关推荐
为了解决这一问题,微软推出了XML DOM(Document Object Model for XML),这是一种用于处理XML文档的强大工具。 #### 二、XML DOM概述 XML DOM 是一个用于处理XML文档的标准对象模型。它提供了一组API...
DOM解析器将整个XML文件加载到内存中,形成一个树形结构,允许开发者通过节点操作来访问和修改XML文档。这种方式的优点在于方便、直观,但缺点是占用内存较大,不适用于处理大型XML文件。 首先,我们需要了解XML的...
在这个例子中,我们将深入探讨如何使用DOM解析XML文件,以理解和掌握XML文档的结构,并进行数据提取、修改和创建。 首先,XML(Extensible Markup Language)是一种标记语言,用于存储和传输数据,具有自描述性和...
在处理XML文件时,DOM解析器会将整个XML文档加载到内存中,形成一个完整的节点树,这样我们就可以通过这个树来查找、修改或遍历XML数据。 XML(eXtensible Markup Language)是一种标记语言,常用于存储和传输结构...
在Android开发中,DOM(Document Object Model)解析是处理XML文档的一种常见方法,它提供了一种结构化的表示XML文档的方式,并允许开发者通过编程接口与XML数据进行交互。本篇文章将深入探讨DOM解析XML文件在...
- 它提供了一系列API来处理XML文档,包括解析、查询、修改等操作。 - MSXML兼容性好,可以在各种Windows环境中运行。 - **XML与Web开发的关系:** - XML作为一种数据交换格式,在Web服务、配置文件、元数据等...
XML(eXtensible Markup Language)是一种用于标记数据的语言...总的来说,DOM是处理XML文档的强大工具,它允许我们方便地读取、修改和写入XML数据。通过熟练掌握DOM API,开发者可以更高效地进行XML数据的处理和操作。
DOM解析方式是将整个XML文件加载到内存中,形成一棵DOM树,每个节点代表XML文档的一部分。这种方式适合小型XML文件,因为大型文件会消耗大量内存。在Java中,DOM解析主要通过`javax.xml.parsers....
DOM(Document Object Model)是XML文档的一种解析标准,它提供了一种结构化的表示XML文档的方式,使得开发者可以方便地访问和操作XML文档的各个部分。本教程“DOM解析XML应用实例(入门经典案例)”旨在帮助初学者...
本笔记将深入探讨如何使用DOM(文档对象模型)和DOM4J库来创建XML文档。 一、DOM解析器 DOM是W3C推荐的一种XML解析标准,它将整个XML文档加载到内存中,形成一棵树形结构,称为DOM树。通过DOM,我们可以方便地访问...
要使用DOM4J读取XML文档,首先需要创建一个`SAXReader`对象,然后调用`read`方法传入XML文件路径。这将返回一个`Document`对象,我们可以从中获取所有元素信息。 ```java File file = new File("path_to_xml_file")...
在处理XML时,DOM(Document Object Model)是一种常用的方法,它将XML文档解析为一个树形结构,使得我们可以方便地访问和修改XML文档的每一个部分。 DOM模型的核心是DOMDocument对象,它是整个XML文档的根节点,...
本主题主要关注如何处理XML文件,包括对其进行增、删、改、查操作,并手动创建树形结构以生成XML文件。 一、XML文件的基本结构 XML文件由一系列的元素构成,每个元素都有开始标签和结束标签,如 `<element>` 和 `...
通过解析和操作这个XML文件,我们可以学习到如何使用DOM解析器读取、修改XML文档,并了解其在实际项目中的应用,比如配置文件的读写、数据交换等场景。 总之,DOM作为XML解析的一种方法,提供了强大且灵活的数据...
生成XML文档时,DOM4J允许我们通过创建`Element`、`Attribute`等对象,构建一个内存中的XML结构,然后将其转换为XML字符串或写入文件。 1. 创建`Document`对象:`Document document = DocumentFactory.getInstance...
在本主题“DOM遍历所有XML节点,并且重新生成XML”中,我们将深入探讨如何利用DOM API遍历XML文档的所有节点,并根据需求重新构建XML文档。 首先,让我们了解XML的基本结构。XML(eXtensible Markup Language)是一...
3. **解析XML**:解析器读取XML文档并创建DOM树。例如,JavaScript中使用`document.implementation.createDocument()`方法或`DOMParser`对象来解析XML。 4. **访问节点**:使用DOM API,可以通过节点名称、索引或...
XML(eXtensible Markup Language)是一种用于标记数据的语言,广泛应用于数据交换、配置文件以及文档存储等领域。本文将深入探讨两种主要的XML解析方法——SAX(Simple API for XML)和DOM(Document Object Model...