首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何取消xml文件的格式

如何取消xml文件的格式
EN

Stack Overflow用户
提问于 2011-12-12 23:03:38
回答 7查看 7.6K关注 0票数 1

我有一个方法,它返回一个带有格式化xml的String。该方法从服务器上的文件中读取xml,并将其解析为字符串:

从本质上讲,该方法目前所做的是:

代码语言:javascript
复制
  private ServletConfig config;
  InputStream xmlIn = null ;
  xmlIn = config.getServletContext().getResourceAsStream(filename + ".xml") ; 
  String xml = IOUtils.toString(xmlIn);
  IOUtils.closeQuietly(xmlIn);
  return xml;  

我需要做的是添加一个新的输入参数,并根据该值继续返回格式化的xml,或者返回未格式化的xml。

我的意思是格式化的xml是这样的:

代码语言:javascript
复制
<xml>
  <root>
    <elements>
       <elem1/>
       <elem2/>
    <elements>
  <root>
</xml>

对于未格式化的xml,我的意思是:

代码语言:javascript
复制
<xml><root><elements><elem1/><elem2/><elements><root></xml>

或者:

代码语言:javascript
复制
<xml>
<root>
<elements>
<elem1/>
<elem2/>
<elements>
<root>
</xml>

有没有简单的方法可以做到这一点?

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2011-12-12 23:06:39

String xml = IOUtils.toString(xmlIn).replace("\n", "")去掉所有换行符。或者使用\t保留几行,但不缩进。

票数 2
EN

Stack Overflow用户

发布于 2011-12-12 23:20:16

尝试如下所示:

代码语言:javascript
复制
TransformerFactory factory = TransformerFactory.newInstance();
Transformer transformer = factory.newTransformer(
    new StreamSource(new StringReader(
        "<xsl:stylesheet version=\"1.0\"" +
        "   xmlns:xsl=\"http://www.w3.org/1999/XSL/Transform\">" + 
        "<xsl:output method=\"xml\" omit-xml-declaration=\"yes\"/>" +
        "  <xsl:strip-space elements=\"*\"/>" + 
        "  <xsl:template match=\"@*|node()\">" +
        "   <xsl:copy>" +
        "    <xsl:apply-templates select=\"@*|node()\"/>" +
        "   </xsl:copy>" +
        "  </xsl:template>" +
        "</xsl:stylesheet>"
    ))
);
Source source = new StreamSource(new StringReader("xml string here"));
StreamResult result = new StreamResult(System.out);
transformer.transform(source, result);

在第二个实例中,如果你有一个内存中的Document,如果你想在保存之前修改DOM,那么它也可以是DOMSource,而不是在第二个实例中使用StreamSource

DOMSource source = new DOMSource(document);

要将XML文件读入Document对象,请执行以下操作:

代码语言:javascript
复制
File file = new File("c:\\MyXMLFile.xml");
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.parse(file);
doc.getDocumentElement().normalize();

享受:)

票数 1
EN

Stack Overflow用户

发布于 2011-12-12 23:24:53

如果您确定格式化的 xml如下:

代码语言:javascript
复制
<xml>
  <root>
    <elements>
       <elem1/>
       <elem2/>
    <elements>
  <root>
</xml>

您可以将^(\s*)<中的所有组1替换为"“。这样,xml中的文本就不会被更改。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8476318

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档