我正在使用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")
,这就是将我的Xml转换为字符串。我的下一个Xml Parsing不再将它识别为元素,所以我在阅读我的元素之前不使用(字符串)解决了这个问题,只是i.Element("field")
这个有效。
听起来你有这样的事情:
<OriginalDocument>
<Foo>A & B</Foo>
</OriginalDocument>
那A & B
代表文本A & B
。因此,当您从元素中获取文本时,您将获得字符串“A&B”。如果您然后使用它来构建这样的新元素:
string foo = "<Foo>" + fooText + "</Foo>";
然后你会得到这样的无效XML:
<Foo>A & B</Foo>
基本上,您不应该以文本形式构造XML。目前尚不清楚你真正想要实现的目标,但你可以很容易地用XElement
形式将一个元素从一个地方复制到另一个地方;你不需要构建一个字符串然后重新解析它。
因此,在这个问题花了好几个小时之后:事实证明,如果你的xml字符串中有一个符号符号(“&”)或任何其他XML转义字符,那么在尝试读取XML时它总是会失败。要解决此问题,请使用其转义字符串格式替换特殊字符
YourXmlString = YourXmlString.Replace("'", "'").Replace("\"", """).Replace(">", ">").Replace("<", "<").Replace("&", "&");