[英]How to escape invalid characters inside XML string in C#
我在C#中有一個XML字符串。 這個XML有幾個標簽。 在其中一些標簽中,文本中包含無效字符,例如“&” 。 我需要從整個長的XML字符串中轉義文本內的這些字符,但我想保留標簽。
我嘗試了HttpUtility.HtmlEncode
和其他一些可用方法,但是它們對整個字符串進行編碼,而不是對標記內的文本進行編碼。 示例標簽是
<node1>This is a string & so is this</node1>
應該轉換為
<node1>This is a string & so is this</node1>
有任何想法嗎? 謝謝
附言:在我沒有找到完整的解決方案之前,我已經問過類似的問題。
我猜最簡單的解決方案是將整個Xml文檔作為XmlDocument加載到內存中,然后遍歷元素並將其值替換為其html編碼形式。
您可以使用CDATA字段,如下所示:
<YourXml>
<Id>1</Id>
<Content>
<![CDATA[
your special caracteres
]]>
</content>
</yourXml>
我不明白這有什么大不了的。 當您將整個xml作為字符串使用時,實現您想要的最簡單方法是使用Replace函數。
例如,整個xml位於字符串str中,那么您要做的就是,
str.Replace("&" , "&");
就是這樣。 您已經實現了您想要的一切。 有時,存在針對大問題的非常簡單的解決方案。 希望這對您有所幫助。
XDocument或XmlDocument是一種解決方法。 如果出於某種不可控制的原因,您只需要在XmlElement中編碼文本塊:
using System.Text;
using System.Xml;
static string EncodeText(string unescapedText) {
if (string.IsNullOrEmpty(unescapedText)) {
return unescapedText;
}
var builder = new StringBuilder(unescapedText.Length);
using (var writer = XmlTextWriter.Create(builder, new XmlWriterSettings {
ConformanceLevel = ConformanceLevel.Fragment
})) {
writer.WriteValue(unescapedText);
}
return builder.ToString();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.