如何将解析和更改的 DOM 文档保存在 xml 文件中?

Posted

技术标签:

【中文标题】如何将解析和更改的 DOM 文档保存在 xml 文件中?【英文标题】:How to save parsed and changed DOM document in xml file? 【发布时间】:2011-06-01 11:54:11 【问题描述】:

我有 xml 文件。我需要阅读它,进行一些更改并将新更改的版本写入某个新目的地。

我设法读取、解析和修补此文件(使用DocumentBuilderFactoryDocumentBuilderDocument 等)。

但我找不到保存该文件的方法。有没有办法获得纯文本视图(如String)或更好的方法?

【问题讨论】:

【参考方案1】:

只要您使用的是xerces-j,这将起作用:

public void serialise(org.w3c.dom.Document document) 
  java.io.ByteArrayOutputStream data = new java.io.ByteArrayOutputStream();
  java.io.PrintStream ps = new java.io.PrintStream(data);

  org.apache.xml.serialize.OutputFormat of =
                      new org.apache.xml.serialize.OutputFormat("XML", "ISO-8859-1", true);
  of.setIndent(1);
  of.setIndenting(true);
  org.apache.xml.serialize.XMLSerializer serializer =
                      new org.apache.xml.serialize.XMLSerializer(ps, of);
  // As a DOM Serializer
  serializer.asDOMSerializer();
  serializer.serialize(document);

  return data.toString();

【讨论】:

【参考方案2】:

这将使您可以定义 xml 格式

new XMLWriter(new FileOutputStream(fileName),
              new OutputFormat()
                        setEncoding("UTF-8");
                        setIndent("    ");
                        setTrimText(false);
                        setNewlines(true);
                        setPadText(true);
              ).write(document);

【讨论】:

【参考方案3】:

这样的工作:

Transformer transformer = TransformerFactory.newInstance().newTransformer();
Result output = new StreamResult(new File("output.xml"));
Source input = new DOMSource(myDocument);

transformer.transform(input, output);

【讨论】:

这将保存到构建项目文件夹中的 xml 文件。但是如果我想将它保存在原始的xml文件中,那我该怎么做呢?我尝试粘贴原始 xml 文件路径,但它仍然不起作用。

以上是关于如何将解析和更改的 DOM 文档保存在 xml 文件中?的主要内容,如果未能解决你的问题,请参考以下文章

XML--解析

XML 解析

xml_解析_解析方式和xml_常见的解析器

操作xml文档,将文档中的数据读取到内存中

如何在文档中下载和保存 xml,然后如何从文档中解析 xml 文件?

dom解析xml文档的步骤