2011-06-10 36 views
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文档中的所有空元素始终呈现为展开标签?

这是对我们至关重要的错误修复 - 下游客户受到负面影响。

非常感谢!

回答

2
+0

我要给延长XmlTextWriter的一个镜头 - 目前我们的代码使用StringWriter的,但是这可能只是做的伎俩。 – 2011-06-10 18:52:48

+0

希望这有助于! ;-) – danyolgiax 2011-06-10 19:02:48

+0

由于我们在开发机器上实现的修补程序在开发服务器(或测试/产品)上不起作用,因此存在更多的不便之处。这项工作完美运行本地强制XML格式 - 不幸的是我们的黑匣子仍然表现不佳。我开始怀疑我在这里解决了错误的问题,不过谢谢。 – 2011-06-10 19:20:24