【发布时间】:2021-08-07 00:35:36
【问题描述】:
我得到了标题中指定的错误。¨注意我已经按照其他线程中的建议使用了 XmlConvert.IsXmlChar 但是我仍然得到错误。
XDocument GetXDocument(string fileName, CloudBlobDirectory folder)
{
CloudBlockBlob blob = folder.GetBlockBlobReference(fileName);
using (var memoryStream = new MemoryStream())
{
blob.DownloadToStream(memoryStream);
memoryStream.Seek(0, SeekOrigin.Begin);
StreamReader sr = new StreamReader(memoryStream, Encoding.UTF8);
var xml = sr.ReadToEnd();
var validXmlChars = xml.Where(ch => XmlConvert.IsXmlChar(ch)).ToArray();
xml = new string(validXmlChars);
return XDocument.Parse(xml);
}
}
这是失败的那一行:
<Property Name="Printkode" Type="String" Access="ReadWrite" Value="%% d2m*DOKSTART|d2m*OVERSKRIFT:"xx"|d2m*CPR:"xxx"" />
【问题讨论】:
-
.Net 中的 XML 阅读器无法读取无效的 XML。在解析之前将文本修复为有效的 XML 是您唯一的选择。请注意,您需要修复实际的无效字符(如“\u000b”)以及在帖子“”中显示后转义。
-
单个字符
&#xB;都是有效的,但它们一起代表一个无效的垂直制表符。 -
Value属性代表什么?您应该考虑使用不同的编码。 -
我有任何内置的东西可以删除无效部分。编码与顶部xml中指定的相同。
-
你怎么知道所有垂直的无效标签?
标签: c# xml linq-to-xml