[英]Cleanup xml file - Invalid character in the given encoding
我正在使用他們的“ SOAP” API針對Magento電子商務進行集成,並且該API返回“ XML”結果。 問題是,這並不總是格式正確的:
<product>
<entity_id>18</entity_id>
<price regular="2925 <span>Nok</span>"/>
...
在此特定情況下,價格常規屬性在屬性文本中既具有不可見字符0xa0(在span標簽之前)又具有<>。
我似乎無法從Magento那里獲取格式正確的XML,因此另一種方法是在將其提供給XmlSerializer
反序列化之前將其清理:
XmlSerializer serializer = new XmlSerializer(typeof(Responses.Product.product));
product = serializer.Deserialize(textReader) as Responses.Product.product;
我可以使用簡單的文本替換來消除不可見的字符,但是我不確定屬性文本中的<>。
我的問題是,如何將其清理為有效的XML?
字符0x3c是<
字符。 對於不可見的字符,您寧願尋找類似0x09 TAB字符的字符。
要修復損壞的標記,您可以使用正則表達式允許標記內的任何貨幣,從而在內容中查找該特定HTML標記:
xml = Regex.Replace(xml, "<span>([A-Za-z]{3})</span>", "<span>$1</span>");
只要XML代碼本身中沒有包含三個字符的span
元素,此方法就起作用。 您可以對其他HTML標簽進行類似的替換,但是請盡量保持模式明確,以避免誤報。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.