问题描述
在使用DOM解析XML并输出文件的过程中,实体定义不在输出的文件。
原XML:
<?xml version="1.0" encoding="UTF-8"?>
<!--Arbortext, Inc., 1988-2011, v.4002-->
<!DOCTYPE book PUBLIC "-//DocBook//DTD DocBook XML V4.0//EN" "dockbook.dtd" [
<!ENTITY logo SYSTEM "../graphics/logo.png" NDATA PNG>
]>
<book>
<title>Programming in Java<title>
<para>XXXX XXX</para>
</book>
使用如下代码解析并且输出到文件:
String xmlFilePath = "c:\\temp\\source.xml";
File xml = new File(xmlFilePath);
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
factory.setValidating(false);
factory.setNamespaceAware(true);
DocumentBuilder builder = factory.newDocumentBuilder();
CatalogResolver resolver = CatalogResolverFactory.getInstance().getCatalogResolver();
builder.setEntityResolver(resolver);
document = builder.parse();
TransformerFactory tFactory = TransformerFactory.newInstance();
Transformer transformer = tFactory.newTransformer();
Properties props = new Properties();
props.put(OutputKeys.INDENT, "yes");
props.put(OutputKeys.ENCODING, "utf-8");
transformer.setOutputProperties(props);
DOMSource source = new DOMSource(document);
String outputPath = "C:\\temp\\test.xml";
StreamResult result = new StreamResult(new File(outputPath));
transformer.transform(source, result);
输出结果:
<?xml version="1.0" encoding="UTF-8"?>
<!--Arbortext, Inc., 1988-2011, v.4002-->
<book>
<title>Programming in Java<title>
<para>XXXX XXX</para>
</book>
解决办法
代码中使用了Transformer进行XML输出,使用LSSerializer进行输出。代码如下:
StringBuffer xmlFileName = new StringBuffer();
xmlFileName.append("C:\\temp\\test.xml");
DOMImplementationRegistry registry = DOMImplementationRegistry.newInstance();
DOMImplementationLS impl = (DOMImplementationLS) registry.getDOMImplementation("LS");
LSSerializer writer = impl.createLSSerializer();
LSOutput output = impl.createLSOutput();
FileWriter out = new FileWriter(new File(xmlFileName.toString()));
output.setCharacterStream(out);
writer.write(currentDocument, output);
分享到:
相关推荐
标题中的"DOM_XML.rar"可能是一个包含DOM解析XML相关示例的压缩文件,"DOM_dom xml_dom xml java_dom解析xml_java解析xml"这部分描述了文件的主要内容,即关于DOM(Document Object Model)在XML解析中的应用,特别...
5. 保存XML:修改后,使用`TransformerFactory`和`Transformer`将内存中的DOM树转换回XML字符串,通过`transform()`方法输出。 在Myeclipse中运行此实例,你将学习到如何在实际项目中应用这些步骤。具体步骤如下: ...
Java DOM 解析 XML 实例是 Java 语言中常用的 XML 解析方法之一,使用 W3C 推荐的文档对象模型(Document Object Model,DOM)来解析 XML 文档。DOM 提供了一个树形结构的对象模型,通过遍历树形结构可以访问和操作 ...
总的来说,理解并熟练掌握DOM解析XML是Java开发中的基础技能,无论是在简单的数据读取还是复杂的XML操作中,它都能提供强大的支持。同时,根据项目需求和性能考虑,可以选择JDOM等其他XML处理库作为替代方案。
标题“java_dom解析xml xml java”表明了本文档的主题是关于如何使用Java中的DOM技术来解析XML文件。 #### 描述分析 描述中提到这是一个适合新手入门的内容,并给出了一个简单的XML示例。该XML文档包含了一个`...
在这个例子中,我们将深入探讨如何使用DOM解析XML文件,以理解和掌握XML文档的结构,并进行数据提取、修改和创建。 首先,XML(Extensible Markup Language)是一种标记语言,用于存储和传输数据,具有自描述性和...
XML DOM是一种在编程中处理XML文档的标准接口,它允许程序员和脚本动态地访问、修改、添加和删除XML文档的结构、内容和样式。DOM将XML文档视为一棵由节点构成的树,其中每个元素、属性、文本等都是一个独立的节点。 ...
DOM为XML文档提供了一种内存中的表示方式,使得开发人员可以方便地创建、修改和遍历XML文档。在Java中,DOM API被包含在`javax.xml.parsers`和`org.w3c.dom`这两个包中。 DOM API的核心类包括`...
例如,假设我们在XML中解析出一个字符串列表,可以这样绑定到ListView: ```java // 假设listItems是解析出来的列表 @BindListView(R.id.your_list_view) ListView listView; @Override protected void onCreate...
**DOMProject:使用DOM解析与输出XML** 在IT领域,XML(eXtensible Markup Language)是一种被广泛用于数据交换和存储的标记语言。XML文件结构清晰,易于人读,同时也便于机器解析和生成。本项目,"DOMProject...
**XMLDOMDocument** 对象代表了XML DOM层次结构中的顶层节点,它是构建和操作XML结构的基础。通过以下命令可以创建一个XMLDOMDocument对象实例: ```vb Set objXMLDoc = CreateObject("Microsoft.XMLDOM") ``` ...
DOM解析XML和创建XML是Web开发中的基础技能,尤其在处理动态数据和接口交互时,理解并掌握DOM与XML的结合应用至关重要。在实际项目中,我们可能还需要结合其他技术,如XSLT(用于转换XML)和XPath(用于在XML文档中...
在Android开发中,DOM(Document Object Model)解析是处理XML文档的一种常见方法,它提供了一种结构化的表示XML文档的方式,并允许开发者通过编程接口与XML数据进行交互。本篇文章将深入探讨DOM解析XML文件在...
Dom4J 输出 XML 时中文乱码解决方案 Dom4J 是一个流行的 Java 库,用于解析和生成 XML 文档。然而,在使用 Dom4J 输出 XML 文档时,中文字符可能会出现乱码问题。这是因为 Dom4J 的默认编码方式可能不支持中文字符...
DOM(Document Object Model)是W3C组织定义的一种标准,它为XML文档提供了一个结构化的表示,并允许编程语言与XML文档进行交互。DOM的核心思想是将XML文档解析为一个树形结构,其中每个节点代表XML文档的一个部分,...
`Transformer.transform(Source input, Result output)`方法实现了这一功能,其中`Source`通常是`Document`对象,`Result`则定义了输出的目标,如文件或流。 总结起来,DOM提供了一种强大的机制,使得开发者可以...
在实际应用中,DOM通常与XPath结合使用,XPath是一种强大的语言,用于查找XML文档中的元素、属性和文本。通过XPath表达式,我们可以更精确地定位到需要操作的部分,提高代码的效率和可读性。 总结,DOM提供了一种...
在本例中,`LinkDTD.dtd`可能是一个DTD(Document Type Definition),它是XML文档的一个规范,定义了元素、属性和它们之间的关系。然而,DOM本身并不直接处理DTD,而是专注于XML文档的结构和内容。如果需要在解析...
完整的Oracle xmldom解析xml入参,经过测试,可以解析,成功入到数据表中。
DOMParser是JavaScript中处理XML文档的主要工具,它允许我们将XML数据转换为DOM(Document Object Model)对象,从而方便我们通过编程方式访问和操作XML内容。 DOM是一种树型结构,将XML文档中的每个元素、属性和...