2015-04-29 1 views
0

Je suis en train d'analyser mes données d'alimentation de base de données XML, mais sur le côté client, je suis continuer à obtenir cette erreur:XML Erreur d'analyse: Erreur pas bien formé

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> 
------------------^ 

J'ai essayé de convertir le paramètre datetime 'ActivateDate' dans la chaîne, mais je reçois toujours la même erreur sur le noeud 'date de publication'. J'ai également essayé de chercher une solution en ligne, mais je suis toujours incapable de résoudre ce problème.

Voici mon code serveur pour référence ultérieure:

 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(); 

     } 

Merci pour votre suggestion et commentaires.

+0

Que se passe lorsque vous branchez votre XML en ici: http://www.xmlvalidation.com/ – Andrew

+1

Lorsque le Xml est pas bien formé cela signifie que vous ne respectez pas l'une des règles suivantes: - documents XML doivent avoir un élément racine - Les éléments XML doivent avoir une balise de fermeture - Les balises XML sont sensibles à la casse - Les éléments XML doivent être correctement imbriqués - Les valeurs d'attribut XML doivent être citées –

+0

Merci à tous pour vos commentaires. Très appréciée. – user3070072

Répondre

2

Les noms d'éléments XML ne peuvent pas contenir d'espaces.

W3C specification déclare balise xml comme:

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

S est un ou plusieurs espaces (# x20 | # x9 | #xD | #xA). Donc, à partir de cette spécification, on voit clairement que l'espace (# x20) est considéré comme un délimiteur entre le nom de l'élément et la liste des attributs - donc le nom lui-même ne peut pas contenir d'espaces.

Changer votre élément Publication Date nom à Publication_Date aidera à faire de votre xml bien formé.

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

Ah je vois. Merci pour votre avis. Je n'étais pas au courant de la cause du problème était si trivial. Désolée de vous avoir fait perdre votre temps. Je vous remercie. – user3070072

1

Les noms d'élément ne peuvent pas contenir d'espaces. Par conséquent, modifiez Publication Date pour supprimer l'espace (par exemple, PublicationDate).

De w3schools, règles de nommage pour les éléments:

  • Les noms des éléments sont sensibles à la casse
  • Les noms des éléments doivent commencer par une lettre ou underscore
  • Les noms des éléments ne peut pas commencer par les lettres xml (ou XML, ou XML, etc.)
  • Les noms d'éléments peuvent contenir des lettres, des chiffres, des traits d'union, des traits de soulignement et des points
  • Les noms d'éléments ne peuvent pas contenir d'espaces