簡體   English   中英

自動更正無效的XML?

[英]Automatically correct invalid XML?

我目前在需要驗證正確的 XML 文件結構的項目上使用 SSIS。 特別是,我必須檢查 XML 文件中是否沒有丟失標簽,如果是,我必須重新組裝沒有標簽的這一行。 我會給你一個例子來更好地理解。

<?xml version="1.0"?>
<catalog>
<DATA>0000000061E82D821590010000409525CD</DATA> 
<DATA>0000000061E82D8C163001000140AD0DF6</DATA> 
<DATA>0000000061E82D9616E301000240776CAB</DATA>
<DATA> 0000000061E82DA0178001000340C56B6</DATA> 
<DATA>0000000061E82DAA188001000440C0C7CB</DATA>
 0000000061E82DDAEA4001000540BB9A276
</catalog>

例如在上面的 XML 中缺少一個<DATA>標簽。 我對 XML 的創建沒有影響。我怎么會注意到缺少<DATA>標記(數據行數不固定),然后檢索沒有標記的那一行?

例如在上面的 xml 中缺少一個<DATA>標簽。 我對 XML 的創建沒有影響。

該解決方案可以是一套 SSIS 組件或 c# 腳本。

一般情況下不可能自動更正無效的XML。

術語更正

例如在上面的 XML 中缺少一個<DATA>標簽。

沒有缺少<DATA>標記。 您可能是說0000000061E82DDAEA4001000540BB9A276周圍應該有開始結束DATA標簽。 差別很大,因為如果只缺少一個標簽,“XML”就不會是格式良好的 如果模式表明catalog元素可能只有DATA子元素,則 XML無效

不要嘗試自動更正無效的 XML

最佳做法是拒絕輸入並強制發件人/創建者修復文檔。 模式的全部存在理由是表達可依賴於處理數據的不變量。 違反這些不變量意味着所有的賭注都被取消了。

不要被窺視孔修復想法的表面簡單所誘惑

每個修復想法都意味着對模式中未表達的數據的假設,這很糟糕,因為:

  • 應該有一個清晰明確的有效性定義和
  • 假設
    • 很可能不會明確表達。
    • 可能根本無法表達。
    • 可能不完整或完全不正確。
    • 可能會 go 未經證實,因為錯誤的生產者可以/不會根據模式修復有效性,不太可能能夠評估對所有數據的假設的有效性,即它正在或可能一直在發送。

也可以看看

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM