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

问题描述 投票:-1回答:1

我试图将文件转换为包含一些特殊字符的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);
}
c# xmldocument
1个回答
0
投票

0x04是一个transmission control character,不能出现在文本字符串中。如果XmlDocument确实出现在您的数据中,则拒绝它是正确的。这确实表明你所拥有的正则表达式没有做你认为它做的事情,如果我是正确的,正则表达式将在行的开头找到一个或多个这些无效字符的第一个实例并替换它,但不是他们都是。对我来说,真正的问题是为什么这个非文本“字符”首先出现在XML数据中。

我还有其他问题。我以前从未见过JsonConvert.DeserializeXmlNode - 我不得不查看它的作用。为什么你对文档的根目录使用JSON函数,因此可能因此不包含JSON?那你为什么要拿这个文件,把它转换成字符串,然后从中创建一个XDocument?为什么不创建一个XDocument开始?

© www.soinside.com 2019 - 2024. All rights reserved.