我正在編寫(xiě)一個(gè)使用 XML SOAP 的應(yīng)用程序。不幸的是,編寫(xiě)請(qǐng)求的代碼不在我的手中,因?yàn)樗且粋€(gè)只提供給我的 DLL 文件。我下載了Jetbrain的dotPeek來(lái)反編譯DLL文件并查看代碼,我發(fā)現(xiàn)soap message request body是這樣寫(xiě)的string message = "<Value>" + myValue + "</Value>";之后解析為 XElement?,F(xiàn)在這在大多數(shù)情況下都有效,因?yàn)榇蠖鄶?shù)請(qǐng)求都接受正常值(例如。<Value>true</Value>)。但是我們正在研究的 xml 技術(shù)中有一個(gè)特定的協(xié)議,我們必須像這樣將整個(gè) xml 字符串作為值傳遞string myValue = "<?xml version=\"1.0\" encoding=\"utf-8\"?><Foobar ID=\"123\" />";這會(huì)引發(fā)錯(cuò)誤:意外的 XML 聲明。XML 聲明必須是文檔中的第一個(gè)節(jié)點(diǎn),并且之前不允許出現(xiàn)空白字符。因?yàn)槲疑傻?xml 主體看起來(lái)像:<Value><?xml version="1.0" encoding="utf-8"?><Foobar ID="123" /></Value>我是否有可能在避免錯(cuò)誤的同時(shí)以某種方式傳遞此 xml 字符串?我正在用 C# 編寫(xiě)所有這些。謝謝您的幫助。
1 回答

狐的傳說(shuō)
TA貢獻(xiàn)1804條經(jīng)驗(yàn) 獲得超3個(gè)贊
幾個(gè)小時(shí)后終于找到了答案。最快的解決方案是將開(kāi)始和結(jié)束標(biāo)記轉(zhuǎn)換為字符實(shí)體
string myValue = "<?xml version=\"1.0\" encoding=\"utf-8\"?><Foobar ID=\"123\" />"; myValue = myValue.Replace("<", "<").Replace(">", ">");
您也可以選擇使用
HttpUtility.HtmlEncode
系統(tǒng).Net.WebUtility.HtmlEncode
- 1 回答
- 0 關(guān)注
- 186 瀏覽
添加回答
舉報(bào)
0/150
提交
取消