我必須通過協議讀取和寫入資料,其中回應 XML 可能會根據服務器應用程式的錯誤狀態而有所不同。如果回應良好,則使用具有特定架構的 Xml_1,但如果回應指示錯誤,則使用具有完全不同架構的 Xml_2。在我看來,好的設計是將錯誤狀態合并到第一個模式中,但我們只是此服務的消費者,我們無權訪問服務器應用程式的設計。我的解決方案是(使用 C#)將 XML 回應讀取為字串,進行一些搜索以了解正在使用的 XML 模式,然后使用適當的 XML 序列化器將回應轉換為物件。有沒有更優雅的解決方案?
uj5u.com熱心網友回復:
兩個模式的聯合是有效的模式嗎?(這通常是這種情況,例如,如果它們使用不同的命名空間,但如果它們都是無命名空間模式或者它們是同一模式的兩個版本,則可能不是這種情況)。
如果聯合是有效的模式,那么您可以考慮對此進行驗證。
否則,查看檔案的開頭通常足以告訴您正在使用哪個詞匯。
可以在不經過驗證的情況下決議 XML 檔案,檢查它,然后驗證已經決議的檔案。甚至可以在單個管道中執行此操作,而無需將整個檔案放入記憶體中。但細節取決于您使用的工具包。您已標記問題 C# - 我不確定這是否可以使用 Microsoft 工具,但我認為使用 Saxon-CS 應該是可能的。[免責宣告,我的產品]。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/460789.html
上一篇:Frida Hook可變引數
下一篇:redis持久化
