xml недопустимый символ в заданной кодировке - PullRequest
3 голосов
/ 08 марта 2010

Я пытаюсь проверить мой xml по его xsd и получаю недопустимый символ ошибки в данной кодировке. Код, который я использую для проверки, приведен ниже:

private static void ValidatingProcess(string XSDPath, string xml)
    {
        MemoryStream stream =
            new MemoryStream(ASCIIEncoding.Default.GetBytes(xml));

        using (StreamReader SR = new StreamReader(XSDPath))
        {
            XmlSchema Schema = XmlSchema.Read(SR, ReaderSettings_ValidationEventHandler);
            XmlReaderSettings ReaderSettings = new XmlReaderSettings();
            ReaderSettings.ValidationType = ValidationType.Schema;
            ReaderSettings.Schemas.Add(Schema);

            ReaderSettings.ValidationEventHandler += ReaderSettings_ValidationEventHandler;
            XmlReader objXmlReader = XmlReader.Create(stream, ReaderSettings);

            bool notDone = true;
            while (notDone)
            {
                notDone = objXmlReader.Read();
            }
        }
    }

Это ошибки в таких символах, как é, так что я догадался, что факт, что UTF-8 был указан как кодировка, или способ создания MemoryStream в приведенном выше коде с помощью ASCIIEncoding. Я попытался изменить кодировку в xsd и xml на UTF-16 и поток памяти на UTF32, но, похоже, это не дает никакого эффекта. Есть идеи?

1 Ответ

5 голосов
/ 08 марта 2010

Не преобразовывайте вашу входную строку в ASCII, если ваша входная строка содержит не-ASCII символы.

Вы можете использовать StringReader для подачи вашей входной строки непосредственно в XmlReader :

using (var reader = XmlReader.Create(new StringReader(xml), settings)) { ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...