Как определить, правильно ли сформирован XML? - PullRequest
8 голосов
/ 08 апреля 2009

У меня большой XML-документ в строке. Как лучше определить, правильно ли сформирован XML?

Ответы [ 4 ]

14 голосов
/ 08 апреля 2009

Что-то вроде:

    static void Main() {
        Test("<abc><def/></abc>");
        Test("<abc><def/><abc>");
    }
    static void Test(string xml) {
        using (XmlReader xr = XmlReader.Create(
                new StringReader(xml))) {
            try {
                while (xr.Read()) { }
                Console.WriteLine("Pass");
            } catch (Exception ex) {
                Console.WriteLine("Fail: " + ex.Message);
            }
        }
    }

Если вам нужно проверить xsd, используйте XmlReaderSettings.

4 голосов
/ 08 апреля 2009

Просто запустите его через парсер. Это выполнит соответствующие проверки (хорошо ли это анализирует).

Если это большой документ (как указано), тогда подойдет анализатор на основе событий (например, SAX), поскольку он не будет хранить документ в памяти.

Часто полезно иметь утилиты XML для проверки такого рода вещей. Я использую XMLStarlet , который представляет собой набор инструментов командной строки для проверки / манипулирования XML.

3 голосов
/ 08 апреля 2009

XmlReader кажется хорошим выбором, поскольку он должен передавать данные (не загружать весь xml за один раз)

http://msdn.microsoft.com/en-us/library/9d83k261.aspx

1 голос
/ 08 апреля 2009

Попробуйте использовать XmlReader с XmlReaderSettings , у которого ConformanceLevel .Document set.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...