gpt4 book ai didi

encoding - ' ',十六进制值 0x1F,是一个无效字符。第 1 行,位置 1

转载 作者:行者123 更新时间:2023-12-03 20:01:14 25 4
gpt4 key购买 nike

我正在尝试从网络读取一个 xml 文件并使用 XDocument 解析它。它通常工作正常,但有时它会给我一天的错误:

 **' ', hexadecimal value 0x1F, is an invalid character. Line 1, position 1**

我尝试了一些来自 Google 的解决方案,但它们不适用于 VS 2010 Express Windows Phone 7。

有一种解决方案可以将 0x1F 字符替换为 string.empty,但我的代码返回一个没有 replace 方法的流。
s = s.Replace(Convert.ToString((byte)0x1F), string.Empty);

这是我的代码:
        void webClient_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e)
{
using (var reader = new StreamReader(e.Result))
{
int[] counter = { 1 };
string s = reader.ReadToEnd();
Stream str = e.Result;
// s = s.Replace(Convert.ToString((byte)0x1F), string.Empty);
// byte[] str = Convert.FromBase64String(s);
// Stream memStream = new MemoryStream(str);
str.Position = 0;
XDocument xdoc = XDocument.Load(str);

var data = from query in xdoc.Descendants("user")
select new mobion
{
index = counter[0]++,
avlink = (string)query.Element("user_info").Element("avlink"),
nickname = (string)query.Element("user_info").Element("nickname"),
track = (string)query.Element("track"),
artist = (string)query.Element("artist"),
};
listBox.ItemsSource = data;
}
}

XML文件:
http://music.mobion.vn/api/v1/music/userstop?devid=

最佳答案

0x1f 是 Windows 控制字符。它不是有效的 XML。最好的办法是更换它。

而不是使用 reader.ReadToEnd() (顺便说一句 - 对于一个大文件 - 可以使用大量内存..虽然你绝对可以使用它)为什么不尝试这样的事情:

string input;
while ((input = sr.ReadLine()) != null)
{
string = string + input.Replace((char)(0x1F), ' ');
}

如果您愿意,您可以重新转换为流,然后随意使用。
byte[] byteArray = Encoding.ASCII.GetBytes( input );
MemoryStream stream = new MemoryStream( byteArray );

否则,您可以继续执行 readToEnd() ,然后清除该非法字符字符串,然后转换回流。

这是清除 xml 中非法字符的好资源 - 很有可能,您还有其他字符...

https://seattlesoftware.wordpress.com/tag/hexadecimal-value-0x-is-an-invalid-character/

关于encoding - ' ',十六进制值 0x1F,是一个无效字符。第 1 行,位置 1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6728329/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com