【发布时间】:2011-09-12 14:25:13
【问题描述】:
我们必须将 xml 发送到一个黑盒处理器,它不能正确处理收缩的空元素,当然,我们不能直接改变它。
如果我们发送:
<element />
我们回来了:
<element>\n</element>
呈现为
<element>
</element>
这会导致我们的客户流程反应不佳
我们应该(需要)回来:
<element></element>
当我们发送过来时:
<element></element>
结果如期而至,所以我们需要发送
<element></element>
不是
到黑匣子。
在检查空元素的属性时,我们注意到
<element />
注册 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 文档中的所有空元素始终呈现为扩展标签?
目前这对我们来说是一个关键的错误修复 - 下游客户正在受到负面影响。
非常感谢!
【问题讨论】:
标签: c# xml xml-parsing linq-to-xml