[英]“An error occurred while parsing EntityName” while Loading an XmlDocument
[英]XmlDocument throwing “An error occurred while parsing EntityName”
我有一个函数,我传递一个字符串作为params称为filterXML,其中包含一个属性中的'&'。
我知道XML不会识别它,它会让我犯错误。 这是我的代码:
public XmlDocument TestXMLDoc(string filterXml)
{
XmlDocument doc = new XmlDocument();
XmlNode root = doc.CreateElement("ResponseItems");
// put that root into our document (which is an empty placeholder now)
doc.AppendChild(root);
try
{
XmlDocument docFilter = new XmlDocument();
docFilter.PreserveWhitespace = true;
if (string.IsNullOrEmpty(filterXml) == false)
docFilter.LoadXml(filterXml); //ERROR THROWN HERE!!!
我应该在代码中更改哪些内容来编辑或解析filterXml? 我的filterXml看起来像这样:
<Testing>
<Test>CITY & COUNTY</Test>
</Testing>
我正在将&#的字符串值更改为。 这是我的代码:
string editXml = filterXml;
if (editXml.Contains("&"))
{
editXml.Replace('&', '&');
}
但它在if语句中给我一个错误:太多的文字。
上面显示的文件不是格式良好的XML,因为&符号未被转义。
您可以尝试:
<Testing>
<Test>CITY & COUNTY</Test>
</Testing>
要么:
<Testing>
<Test><![CDATA[CITY & COUNTY]]></Test>
</Testing>
关于第二个问题:String.Replace有两个签名。 一个取字符,另一个取字符串。 使用单引号尝试构建字符文字 - 但对于C#而言,“&amp;”实际上是一个字符串(它有五个字符)。
它是否适用于双引号?
editXml.Replace("&", "&");
如果你想保守一点,你也可以编写代码来确保你所替换的&s之后没有其中一个
amp; quot; apos; gt; lt; or #
(但这仍然不是一个完美的过滤)
要在XML中指定&符,您应该使用&
因为&符号('&')在XML中具有特殊含义。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.