{“'\ u0004',十六进制值0x04,是无效字符

时间:2018-09-01 06:17:06

标签: c# xmldocument

我正在尝试将文件转换为包含某些特殊字符的XML格式,但由于数据中存在特殊字符,因此未进行转换。 我已经有此正则表达式代码,但对我来说仍然不起作用,请帮忙。

我尝试过的代码:

string filedata = @"D:\readwrite\test11.txt";
string input = ReadForFile(filedata);
string re1 = @"[^\u0000-\u007F]+";
string re5 = @"\p{Cs}";
data = Regex.Replace(input, re1, "");   
data = Regex.Replace(input, re5, "");

XmlDocument xmlDocument = new XmlDocument();
try
{
   xmlDocument = (XmlDocument)JsonConvert.DeserializeXmlNode(data);
   var Xdoc = XDocument.Parse(xmlDocument.OuterXml);
}
catch (Exception ex)
{
   Console.WriteLine(ex);
}

1 个答案:

答案 0 :(得分:0)

0x04transmission control character,并且不能出现在文本字符串中。如果XmlDocument确实出现在您的数据中,则可以拒绝它。这确实表明您拥有的正则表达式没有按照您的预期做,如果我没错,正则表达式将在行的开头找到一个或多个无效字符的第一个实例并将其替换,但不能他们全部。对我来说,真正的问题是,为什么这种非文本的“字符”首先出现在旨在作为XML的数据中。

我还有其他问题。我以前从未见过JsonConvert.DeserializeXmlNode-我不得不查看它的作用。为什么要针对文档的根使用JSON函数,该文档可能因此不包含JSON?您为什么随后要获取该文档,将其转换回字符串,然后从中创建XDocument?为什么不创建一个XDocument开头呢?