XDocument Parse String - Проблема с нулевым терминатором - PullRequest
1 голос
/ 02 декабря 2011

Итак, я получаю данные от третьей стороны в виде строки XML.

Я хочу затем сделать следующее

messageString = Encoding.ASCII.GetString(messageBeingSent);
messageString = messageString.Trim();

XDocument xmlDoc = XDocument.Parse(messageString);

Однако, он выдает ошибку и дает мне исключение шестнадцатеричное значение 0x00 является недопустимым символом. Строка 1, позиция x, где X - последний символ в строке.

Мне кажется, что нулевой терминатор отправляется вместе со строкой, а затем XDocument отключается из-за нулевого терминатора.

Какое решение для этого?

Ответы [ 2 ]

2 голосов
/ 02 декабря 2011

Нулевой символ недопустим в XML.

Вы можете передавать символы, которые хотите обрезать:

 messageString.Trim(' ', '\0', ....);
0 голосов
/ 02 декабря 2011

Я бы сказал, что кажется, что решение просто

messageString = messageString.replace("0x00", "");

или если вы уверены, что это нули:

string s = myEncoding.GetString(bytes.TakeWhile(b => !b.Equals(0)).ToArray());
...