繁体   English   中英

从有效的XML获取内容后,“解析EntityName时发生错误”

[英]“An error occurred while parsing EntityName” after grabbing content from valid XML

我正在用XDocument读取XML字符串

XmlReader reader = XmlReader.Create(new StringReader(xmltext));
        reader.Read();
        XDocument xdoc = XDocument.Load(reader);

然后,我抓取一些标签的内容,并将它们放在标签中的其他字符串中。 当我尝试以与第一个相同的方式加载此字符串时,收到错误消息“解析EntityName。第1行,位置344时发生错误。”。

我认为应该正确解析它,因为之前已经对其进行了解析,所以我想我在这里遗漏了一些东西。

我正在使用(string)i.Element("field")阅读和复制第一个XML的内容。

我正在使用.net 4

当我获取要用于构建另一个Xml字符串的xml的内容时,我使用(string)i.Element("field") ,这(string)i.Element("field")我的Xml转换为字符串。 我的下一个Xml Parsing不再将其识别为元素,因此我在读取元素之前不使用(string)解决了问题,而仅使用i.Element("field")

听起来您有这样的事情:

<OriginalDocument>
    <Foo>A &amp; B</Foo>
</OriginalDocument>

那个A &amp; B A &amp; B代表文本A & B 因此,当您从元素中获取文本时,将获得字符串“ A&B”。 如果您随后使用它来构建一个像这样的新元素:

string foo = "<Foo>" + fooText + "</Foo>";

那么您最终将获得无效的XML,如下所示:

<Foo>A & B</Foo>

基本上,您不应该以文本形式构造XML。 目前尚不清楚您真正想要实现的目标,但是您可以轻松地以XElement形式将一个元素从一个位置复制到另一个位置。 您不需要构建字符串然后重新解析它。

因此,在花了几个小时解决这个问题之后:事实证明,如果您在xml字符串中包含一个&符号或其他XML转义字符,则在尝试读取XML时它将总是失败。 要解决此问题,请将特殊字符替换为转义的字符串格式

 YourXmlString = YourXmlString.Replace("'", "&apos;").Replace("\"", "&quot;").Replace(">", "&gt;").Replace("<", "&lt;").Replace("&", "&amp;");

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM