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

如果我们发送:

<element />


我们回来了:

<element>\n</element>


呈现为

    <element>
</element>


导致我们的客户流程反应不良

我们应该(需要)回来:

<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变为false,在调试环境中,将其发送到黑匣子时一切都很好,但是当我们部署到开发服务器(当然还有测试和产品)时,最终仍然看到来自黑框,就像标记将要移为空一样。

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

目前,这对我们来说是关键的错误修复-下游客户受到负面影响。

非常感谢!

最佳答案

看这里:

Render Empty XML Elements as Parent Elements

08-28 17:22