2015-04-29 3 views
0

Я пытаюсь разобрать мои данные подающие базы данных как 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> 
------------------^ 

Я попытался преобразования параметра DATETIME «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(); 

     } 

Благодарим Вас за предложение и обратной связи.

+0

Что происходит, когда вы подключаете ваш XML в здесь: http://www.xmlvalidation.com/ – Andrew

+1

Когда Xml не хорошо сформировавшееся это означает, что вы нарушили одно из следующих правил: - XML-документы должны иметь корневой элемент - Элементы XML должны иметь закрытый тег - XML-теги чувствительны к регистру - Элементы XML должны быть правильно вложены - Значения атрибутов XML должны быть указаны –

+0

Спасибо всем, что обратили свое внимание. Очень признателен. – user3070072

ответ

2

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

W3C specification объявляет XML-тег, как:

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

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

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

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

xml.WriteElementString("Publication_Date", dat); 
+0

А я вижу. Спасибо за ваш отзыв. Я не знал, что причина проблемы была такой тривиальной. Извините за то, что потратил ваше время. Спасибо. – user3070072

1

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

От w3schools, правила именования для элементов: имена

  • элементные чувствительны к регистру
  • Имена элементов должны начинаться с буквы или символа подчеркивания
  • имена
  • Элемент не может начинаться с букв XML (или XML или Xml и т. Д.)
  • Имена элементов могут содержать буквы, цифры, дефисы, символы подчеркивания и периоды
  • Имена элементов не могут содержать пробелов
Смежные вопросы