簡體   English   中英

清理xml文件-給定編碼中的無效字符

[英]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>", "&lt;span&gt;$1&lt;/span&gt;");

只要XML代碼本身中沒有包含三個字符的span元素,此方法就起作用。 您可以對其他HTML標簽進行類似的替換,但是請盡量保持模式明確,以避免誤報。

暫無
暫無

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

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