强制 XDocument 中的空元素展开

发布于 2024-11-14 18:58:59 字数 1256 浏览 2 评论 0原文

我们必须将 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 文档中的所有空元素始终呈现为扩展标签?

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

非常感谢!

We have to send xml to a black box processor which does not handle contracted empty elements properly, and of course, which we can't change directly.

If we send:

<element />

We get back:

<element>\n</element>  

which renders as

    <element>
</element> 

which causes our customers processes to react badly

We should (need to) get back:

<element></element> 

When we send over:

<element></element>

the result is as desired, so we need to send

<element></element>

not

to the black box.

When examining the attributes of the empty elements we noted that

<element /> 

registered isEmpty == true while

<element></element> 

registered isEmpty as false, so as an attempted hack we ran this loop:

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

And in debugging we determined that isEmpty became false, and in debugging environment when sending this to the black box, all was well, but when we deploy to our dev server (and test and prod of course), we still end up seeing output from the black box as if the tags are going over as empty.

How can we force all empty elements in an XML document to always render as expanded tags?

This is a critical bug fix for us at this point - downstream customers are being negatively affected.

Thanks very much!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文