Ошибка синтаксического анализа XML: неправильно сформированная ошибка

Я пытаюсь проанализировать данные канала моей базы данных как XML, однако на стороне клиента я продолжаю получать эту ошибку:

XML Parsing Error: not well-formed
Location: http://localhost:12736/Test.aspx
Line Number 7, Column 26:        

 <Publication Date>29/04/2015 09:40:53</Publication Date>
 ------------------^

Я попытался преобразовать параметр даты и времени «ActivateDate» в строку, но все еще получаю ту же ошибку в узле «дата публикации». Я также пытался найти решение в Интернете, но я все еще не могу решить эту проблему.

Вот мой код сервера для дальнейшего использования:

        Response.Clear();
        Response.ContentType = "text/xml";
        using (XmlTextWriter xml = new XmlTextWriter(Response.OutputStream, Encoding.UTF8))
        {
            xml.Formatting = Formatting.Indented;
            xml.Indentation = 4;
            xml.WriteStartDocument();
            xml.WriteStartElement("items");

            foreach (DataRow oFeedItem in dt.Rows)
            {

               // DateTime dtt = DateTime.Parse(oFeedItem["ACTIVEDATE"].ToString());

                string dat = Convert.ToString(oFeedItem["ACTIVEDATE"].ToString()); 

               // dat.ToString("dd MMMM yyyy"); 
                xml.WriteStartElement("Article");
                xml.WriteElementString("title", oFeedItem["title"].ToString());
                xml.WriteStartElement("description");
                xml.WriteCData(oFeedItem["Body"].ToString());
                xml.WriteEndElement();
                xml.WriteElementString("categories", oFeedItem["categories"].ToString());
                xml.WriteElementString("Publication Date", dat);
                xml.WriteEndElement();
            }

            xml.WriteEndElement();
            xml.WriteEndDocument();
            xml.Flush();
            xml.Close();

            Response.End();

        }

Спасибо за ваше предложение и отзыв.


person user3070072    schedule 29.04.2015    source источник
comment
Что произойдет, если вы вставите свой XML здесь: xmlvalidation.com   -  person Andrew    schedule 29.04.2015
comment
Если XML-файл имеет неправильный формат, это означает, что вы нарушаете одно из следующих правил: - Документы XML должны иметь корневой элемент - Элементы XML должны иметь закрывающий тег - Теги XML чувствительны к регистру - Элементы XML должны быть правильно вложены - Значения атрибутов XML должен быть процитирован   -  person Paul Weiland    schedule 29.04.2015
comment
Спасибо всем за ваши отзывы. Очень признателен.   -  person user3070072    schedule 29.04.2015


Ответы (2)


Имена элементов XML не могут содержать пробелы.

спецификация W3C объявляет тег xml как:

'<' Name (S Attribute)* S? '>'

где S — один или несколько пробельных символов (#x20 | #x9 | #xD | #xA).

Итак, из этой спецификации ясно видно, что пробел (#x20) считается разделителем между именем элемента и списком атрибутов, поэтому само имя не может содержать пробелы.

Изменение имени элемента Publication Date на Publication_Date поможет сделать ваш xml правильным.

xml.WriteElementString("Publication_Date", dat);
person Andy Korneyev    schedule 29.04.2015
comment
Ах я вижу. Спасибо за ваш отзыв. Я не знал, что причина проблемы была настолько тривиальной. Извините, что потратил ваше время. Спасибо. - person user3070072; 29.04.2015

Имена элементов не могут содержать пробелы, поэтому измените Publication Date, чтобы удалить пробел (например, PublicationDate).

Из w3schools правила именования элементов:

  • Имена элементов чувствительны к регистру
  • Имена элементов должны начинаться с буквы или символа подчеркивания.
  • Имена элементов не могут начинаться с букв xml (или XML, или Xml и т. д.)
  • Имена элементов могут содержать буквы, цифры, дефисы, символы подчеркивания и точки.
  • Имена элементов не могут содержать пробелы
person Charles Mager    schedule 29.04.2015