Почему каждый файл XML, который я создаю с помощью .net XMLWriter, не проходит проверку W3C?

Валидатор W3C говорит мне

Line 256, Column 12: non SGML character number 0

Обе ошибки возникают в самом конце файла.

Вот мой сокращенный код:

            dim writer as XmlWriter
            dim xmlSettings as new XmlWriterSettings
            xmlSettings.Encoding = Encoding.UTF8
            xmlSettings.CheckCharacters = true
            xmlSettings.ConformanceLevel = ConformanceLevel.Document
            xmlSettings.Indent = true

            writer = XmlWriter.Create("D:\somedata.xml", xmlSettings)

            writer.WriteStartDocument()
            writer.WriteStartElement("listings")

            while invReader.Read( )

                writer.WriteStartElement("listing")

                'a bunch of .writeElementString calls here

                writer.WriteEndElement()
            end while       
            writer.WriteEndElement()
            writer.WriteEndDocument()
            writer.Close()

person rg89    schedule 16.02.2012    source источник
comment
Пожалуйста, покажите соответствующие части вашего xml.   -  person jrummell    schedule 17.02.2012
comment
Файл, созданный с использованием вашего кода, отлично работает в моем Firefox.   -  person svick    schedule 17.02.2012
comment
@svick ты прав. Я предполагаю, что данные, которые я помещаю в элементы списка, вызывают аномалию в конце файла.   -  person rg89    schedule 17.02.2012
comment
Итак, теперь я не получаю ошибок в FireFox, но валидатор W3 сообщает мне Line 243, Column 12: character data is not allowed here </listings> и выделяет символ после последнего ›. Проблема в том, что ‹/listings› — это последний тег в файле, и после него нет символа, который я мог бы изучить.   -  person rg89    schedule 17.02.2012


Ответы (1)


Похоже, вы пытаетесь написать символ, который валидатор считает недопустимым.

Проверьте эту ссылку для примера вашей ошибки:

http://forums.htmlhelp.com/index.php?showtopic=11270

person Rick Hodder    schedule 16.02.2012
comment
Я согласен, что валидатор находит недопустимый символ, но он находится в конце файла после последнего закрывающего тега. Когда я открываю свой XML-файл в текстовом редакторе, я даже не могу выбрать символ, который валидатор считает недопустимым. Файл заканчивается на предшествующем символе. - person rg89; 17.02.2012
comment
может быть, откройте файл в шестнадцатеричном редакторе и посмотрите, что это за символ. если в конце, то, вероятно, это код в WriteEndDocument или WriteEndElement, который добавляет недопустимый символ. Может быть, поставить точку останова и пройтись по коду, проверяя, что пишется. - person Rick Hodder; 17.02.2012