强制展开XDocument中的空元素

本文关键字:元素 XDocument | 更新日期: 2023-09-27 17:58:56

我们必须将xml发送到一个黑盒处理器,该处理器不能正确处理收缩的空元素,当然,我们不能直接更改它。

如果我们发送:

<element />

我们回来了:

<element>'n</element>  

呈现为

    <element>
</element> 

这导致我们的客户流程对反应不佳

我们应该(需要)返回:

<element></element> 

当我们发送时:

<element></element>

结果符合要求,因此我们需要发送

<element></element>

不是

黑盒。

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

<element /> 

registered isEmpty==true while

<element></element> 

将isEmpty注册为false,因此作为一次尝试的黑客攻击,我们运行了以下循环:

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

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

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

在这一点上,这对我们来说是一个关键的错误修复——下游客户受到了负面影响。

非常感谢!

强制展开XDocument中的空元素

查看此处:

将空XML元素渲染为父元素