c# - 强制扩展 XDocument 中的空元素

标签 c# xml xml-parsing linq-to-xml

我们必须将 xml 发送到黑盒处理器,它不能正确处理契约空元素,当然,我们不能直接更改。

如果我们发送:

<element />

我们回来了:

<element>\n</element>  

呈现为

    <element>
</element> 

这导致我们的客户流程 react 不佳

我们应该(需要)回来:

<element></element> 

当我们发送过来时:

<element></element>

结果如愿,所以我们需要发送

<element></element>

不是

到黑匣子。

在检查空元素的属性时,我们注意到

<element /> 

注册 isEmpty == true 而

<element></element> 

将 isEmpty 注册为 false,因此作为一次黑客尝试,我们运行了这个循环:

        foreach (XElement feature in _xDocument.Descendants("feature").Where(feature => feature.Element("expiry").IsEmpty))
        {
            feature.Element("expiry").Value = string.Empty;
        }

并且在调试中我们确定 isEmpty 变成了假,并且在调试环境中将其发送到黑盒时,一切都很好,但是当我们部署到我们的开发服务器(当然还有测试和生产)时,我们仍然结束了看到黑盒子的输出,就好像标签变成空的一样。

我们如何强制 XML 文档中的所有空元素始终呈现为扩展标签?

目前,这对我们来说是一个重要的错误修复 - 下游客户受到了负面影响。

非常感谢!

最佳答案

关于c# - 强制扩展 XDocument 中的空元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6308452/

相关文章:

c# - Linq 到 XML : from query to variable

XML 编码设置和特定字符集

java - 为 pom.xml 构建 XML 标签

javascript - 如何将 C# 与 javascript 混合使用以更改 html?

r - R不同文件结构中的XML数据

xml - XSLT 传递参数

Jquery 与 JSON 数组 - 转换为 Javascript 数组

c# - 基于 WPF 数据网格中的列值显示图像

c# - 使用网络登录从 Windows 服务创建 GUI

c# - Task.Run 在这里是否合适,包装网络调用?