2011-06-10 59 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