2
我们必须将xml发送到一个黑盒处理器,它不能正确处理收缩的空元素,当然,我们不能直接更改。强制XDocument中的空元素展开
如果我们派:
<element />
我们得到的结果:
<element>\n</element>
这使得作为
<element>
</element>
这使我们的客户进程产生不良反应
我们应该(需要)得到的结果:
<element></element>
当我们送过来:作为期望
<element></element>
的结果,所以我们需要发送
<element></element>
不
到黑匣子。
在检查空元素的属性,我们注意到,
<element />
注册的isEmpty ==真而
<element></element>
注册的isEmpty为假,从而企图破解我们是把这个循环:
foreach (XElement feature in _xDocument.Descendants("feature").Where(feature => feature.Element("expiry").IsEmpty))
{
feature.Element("expiry").Value = string.Empty;
}
而在调试中,我们确定isEmpty变成了错误,并且在调试环境发送到黑匣子时,一切都很顺利,但是当我们部署到我们的开发服务器(当然还有测试和产品)时,我们最终仍然看到黑匣子的输出,就好像标签已经空了一样。
我们如何强制XML文档中的所有空元素始终呈现为展开标签?
这是对我们至关重要的错误修复 - 下游客户受到负面影响。
非常感谢!
我要给延长XmlTextWriter的一个镜头 - 目前我们的代码使用StringWriter的,但是这可能只是做的伎俩。 – 2011-06-10 18:52:48
希望这有助于! ;-) – danyolgiax 2011-06-10 19:02:48
由于我们在开发机器上实现的修补程序在开发服务器(或测试/产品)上不起作用,因此存在更多的不便之处。这项工作完美运行本地强制XML格式 - 不幸的是我们的黑匣子仍然表现不佳。我开始怀疑我在这里解决了错误的问题,不过谢谢。 – 2011-06-10 19:20:24