You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何去除ASP.Net Web Service返回XML的缩进与换行?

解决WebMethod返回紧凑无格式XML的问题

嘿,这个问题我之前也碰到过,其实解决起来很简单!默认情况下ASP.NET的WebMethod在返回XmlDocument时,会自动给XML加上缩进和换行来美化显示,但这确实会给后续解析带来额外空白节点的麻烦。

你可以试试下面两种方案,都能生成你想要的无缩进、无换行的紧凑XML:

方案一:直接返回格式化后的字符串(推荐)

不要返回XmlDocument类型,改成返回字符串,这样你可以完全控制XML的输出格式:

[WebMethod]
public string SampleXML() {
    XmlDocument doc = new XmlDocument();
    doc.LoadXml("<note><to>Foo</to><from>Bar</from><body>Test message.</body></note>");
    
    using (StringWriter sw = new StringWriter())
    using (XmlTextWriter xw = new XmlTextWriter(sw))
    {
        // 关闭格式化,不生成缩进和换行
        xw.Formatting = Formatting.None;
        doc.WriteTo(xw);
        return sw.ToString();
    }
}

运行这个方法后,返回的就是完全紧凑的XML:

<?xml version="1.0" encoding="utf-8"?><note><to>Foo</to><from>Bar</from><body>Test message.</body></note>

方案二:使用XmlWriterSettings配置输出(更灵活)

如果你需要更细致的控制(比如是否保留XML声明、编码格式等),可以用XmlWriterSettings来配置:

[WebMethod]
public string SampleXML() {
    XmlDocument doc = new XmlDocument();
    doc.LoadXml("<note><to>Foo</to><from>Bar</from><body>Test message.</body></note>");
    
    XmlWriterSettings settings = new XmlWriterSettings();
    settings.Indent = false; // 关闭缩进
    settings.OmitXmlDeclaration = false; // 保留XML声明(默认也是false,这里显式写出来更清晰)
    settings.NewLineHandling = NewLineHandling.None; // 不处理换行
    
    using (StringWriter sw = new StringWriter())
    using (XmlWriter writer = XmlWriter.Create(sw, settings))
    {
        doc.WriteTo(writer);
        writer.Flush();
        return sw.ToString();
    }
}

为什么不直接返回XmlDocument?

原因是ASP.NET的WebMethod在序列化XmlDocument对象时,内部会自动应用格式化规则,添加缩进和换行,这部分是框架默认行为,很难直接修改。而返回字符串的方式绕开了框架的自动格式化,完全由你控制输出内容。

这样修改后,你再查看返回数据的源码,就会得到你想要的紧凑XML,不会再有额外的空白节点干扰解析啦!

内容的提问来源于stack exchange,提问作者Alex W

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 07:38:31