C# 如何在C中转义XML字符串中的无效字符#
我有一个C#格式的XML字符串。这个XML有几个标记。在其中一些标记中,文本中存在无效字符,如“&”。我需要从整个长XML字符串中转义文本中的这些字符,但我希望保留标记 我尝试了C# 如何在C中转义XML字符串中的无效字符#,c#,xml,C#,Xml,我有一个C#格式的XML字符串。这个XML有几个标记。在其中一些标记中,文本中存在无效字符,如“&”。我需要从整个长XML字符串中转义文本中的这些字符,但我希望保留标记 我尝试了HttpUtility.HtmlEncode和其他一些可用的方法,但它们编码整个字符串,而不仅仅是标记中的文本。示例标记包括 这是一个字符串,因此应将其转换为 <node1>This is a string & so is this</node1> 这是一个字符串&;这也是
HttpUtility.HtmlEncode
和其他一些可用的方法,但它们编码整个字符串,而不仅仅是标记中的文本。示例标记包括
这是一个字符串,因此应将其转换为
<node1>This is a string & so is this</node1>
这是一个字符串&;这也是
有什么想法吗?谢谢
另外,我知道在我还没有找到这个问题的完整解决方案之前,也有人问过类似的问题 您可以使用CDATA字段,如下所示:
<YourXml>
<Id>1</Id>
<Content>
<![CDATA[
your special caracteres
]]>
</content>
</yourXml>
1.
您可以使用CDATA字段,如下所示:
<YourXml>
<Id>1</Id>
<Content>
<![CDATA[
your special caracteres
]]>
</content>
</yourXml>
1.
我想最简单的解决方案是将整个Xml文档作为XmlDocument加载到内存中,然后遍历元素并用html编码的形式替换值。我想最简单的解决方案是将整个Xml文档作为XmlDocument加载到内存中,然后遍历元素并用他们的html编码形式。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();
}
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();
}
我不明白这有什么大不了的。当您将整个xml作为一个字符串时,实现所需内容的最简单方法是使用Replace函数
例如,整个xml都在字符串str中,那么您所要做的就是
str.Replace("&" , "&");
就是这样,伙计。你已经实现了你想要的一切。有时,对于大问题存在非常简单的解决方案。希望这对你有帮助。我不明白这有什么大不了的。当您将整个xml作为一个字符串时,实现所需内容的最简单方法是使用Replace函数
例如,整个xml都在字符串str中,那么您所要做的就是
str.Replace("&" , "&");
就是这样,伙计。你已经实现了你想要的一切。有时,对于大问题存在非常简单的解决方案。希望这对您有所帮助。这可能会有帮助:这可能会有帮助: