0

我正在使用 XDocument 读取 XML 字符串

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

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

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

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

我正在使用.net 4

4

3 回答 3

0

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

于 2012-08-07T09:52:54.380 回答
0

听起来你有这样的东西:

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

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

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

那么你最终会得到这样的无效 XML:

<Foo>A & B</Foo>

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

于 2012-08-07T10:01:06.610 回答
0

所以在这个问题上花费了几个小时之后:事实证明,如果您的 xml 字符串中有一个 & 符号 ("&") 或任何其他 XML 转义字符,那么您尝试读取 XML 将始终失败。要解决此问题,请将特殊字符替换为其转义字符串格式

 YourXmlString = YourXmlString.Replace("'", "&apos;").Replace("\"", "&quot;").Replace(">", "&gt;").Replace("<", "&lt;").Replace("&", "&amp;");
于 2018-11-01T18:14:21.353 回答