`
long_jj
  • 浏览: 1321 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

输出DOM中的XML的实体定义(InternalSubset)

阅读更多

问题描述

在使用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_dom xml_dom xml java_dom解析xml_java解析xml

    标题中的"DOM_XML.rar"可能是一个包含DOM解析XML相关示例的压缩文件,"DOM_dom xml_dom xml java_dom解析xml_java解析xml"这部分描述了文件的主要内容,即关于DOM(Document Object Model)在XML解析中的应用,特别...

    DOM解析XML应用实例(入门经典案例)

    5. 保存XML:修改后,使用`TransformerFactory`和`Transformer`将内存中的DOM树转换回XML字符串,通过`transform()`方法输出。 在Myeclipse中运行此实例,你将学习到如何在实际项目中应用这些步骤。具体步骤如下: ...

    java dom 解析 xml 实例

    Java DOM 解析 XML 实例是 Java 语言中常用的 XML 解析方法之一,使用 W3C 推荐的文档对象模型(Document Object Model,DOM)来解析 XML 文档。DOM 提供了一个树形结构的对象模型,通过遍历树形结构可以访问和操作 ...

    java平台中使用DOM解析xml文件

    总的来说,理解并熟练掌握DOM解析XML是Java开发中的基础技能,无论是在简单的数据读取还是复杂的XML操作中,它都能提供强大的支持。同时,根据项目需求和性能考虑,可以选择JDOM等其他XML处理库作为替代方案。

    java_dom解析xml xml java

    标题“java_dom解析xml xml java”表明了本文档的主题是关于如何使用Java中的DOM技术来解析XML文件。 #### 描述分析 描述中提到这是一个适合新手入门的内容,并给出了一个简单的XML示例。该XML文档包含了一个`...

    DOM解析XML文件例子

    在这个例子中,我们将深入探讨如何使用DOM解析XML文件,以理解和掌握XML文档的结构,并进行数据提取、修改和创建。 首先,XML(Extensible Markup Language)是一种标记语言,用于存储和传输数据,具有自描述性和...

    XML_DOM 教程 XML_DOM 教程

    XML DOM是一种在编程中处理XML文档的标准接口,它允许程序员和脚本动态地访问、修改、添加和删除XML文档的结构、内容和样式。DOM将XML文档视为一棵由节点构成的树,其中每个元素、属性、文本等都是一个独立的节点。 ...

    Java DOM 生成XML

    DOM为XML文档提供了一种内存中的表示方式,使得开发人员可以方便地创建、修改和遍历XML文档。在Java中,DOM API被包含在`javax.xml.parsers`和`org.w3c.dom`这两个包中。 DOM API的核心类包括`...

    Android Dom解析XML

    例如,假设我们在XML中解析出一个字符串列表,可以这样绑定到ListView: ```java // 假设listItems是解析出来的列表 @BindListView(R.id.your_list_view) ListView listView; @Override protected void onCreate...

    DOMProject(使用DOM输出XML)

    **DOMProject:使用DOM解析与输出XML** 在IT领域,XML(eXtensible Markup Language)是一种被广泛用于数据交换和存储的标记语言。XML文件结构清晰,易于人读,同时也便于机器解析和生成。本项目,"DOMProject...

    dom动态生成使用XML DOM生成XML.pdf

    **XMLDOMDocument** 对象代表了XML DOM层次结构中的顶层节点,它是构建和操作XML结构的基础。通过以下命令可以创建一个XMLDOMDocument对象实例: ```vb Set objXMLDoc = CreateObject("Microsoft.XMLDOM") ``` ...

    DOM解析XML 创建XML

    DOM解析XML和创建XML是Web开发中的基础技能,尤其在处理动态数据和接口交互时,理解并掌握DOM与XML的结合应用至关重要。在实际项目中,我们可能还需要结合其他技术,如XSLT(用于转换XML)和XPath(用于在XML文档中...

    DOM解析xml文件实例讲解

    在Android开发中,DOM(Document Object Model)解析是处理XML文档的一种常见方法,它提供了一种结构化的表示XML文档的方式,并允许开发者通过编程接口与XML数据进行交互。本篇文章将深入探讨DOM解析XML文件在...

    dom4j 输出XML时中文乱码解决

    Dom4J 输出 XML 时中文乱码解决方案 Dom4J 是一个流行的 Java 库,用于解析和生成 XML 文档。然而,在使用 Dom4J 输出 XML 文档时,中文字符可能会出现乱码问题。这是因为 Dom4J 的默认编码方式可能不支持中文字符...

    xml.rar_DOM_XML DOM_dom xml_xml

    DOM(Document Object Model)是W3C组织定义的一种标准,它为XML文档提供了一个结构化的表示,并允许编程语言与XML文档进行交互。DOM的核心思想是将XML文档解析为一个树形结构,其中每个节点代表XML文档的一个部分,...

    dom读取xml与写入xml

    `Transformer.transform(Source input, Result output)`方法实现了这一功能,其中`Source`通常是`Document`对象,`Result`则定义了输出的目标,如文件或流。 总结起来,DOM提供了一种强大的机制,使得开发者可以...

    利用DOM读写XML

    在实际应用中,DOM通常与XPath结合使用,XPath是一种强大的语言,用于查找XML文档中的元素、属性和文本。通过XPath表达式,我们可以更精确地定位到需要操作的部分,提高代码的效率和可读性。 总结,DOM提供了一种...

    用DOM读写XML文件

    在本例中,`LinkDTD.dtd`可能是一个DTD(Document Type Definition),它是XML文档的一个规范,定义了元素、属性和它们之间的关系。然而,DOM本身并不直接处理DTD,而是专注于XML文档的结构和内容。如果需要在解析...

    Oracle xmldom解析xml入参

    完整的Oracle xmldom解析xml入参,经过测试,可以解析,成功入到数据表中。

    DOMParser解析xml

    DOMParser是JavaScript中处理XML文档的主要工具,它允许我们将XML数据转换为DOM(Document Object Model)对象,从而方便我们通过编程方式访问和操作XML内容。 DOM是一种树型结构,将XML文档中的每个元素、属性和...

Global site tag (gtag.js) - Google Analytics