2009-09-05 9 views
1

J'ai l'impression que ce XML n'est pas valide, quelqu'un peut-il expliquer pourquoi?Est-ce un XML valide?

Je pense qu'il a quelque chose à faire ce point le nom de l'élément?

estate_price.price_suggestion

Autre chose non valide à propos de ce code XML?

XML

\\ <?xml version="1.0" encoding="UTF-8"?> 

<iad> 
    <DataTag> 
    <element id="0"> 
     <changed_string>content</changed_string> 
     <no_of_bedrooms>content</no_of_bedrooms> 
     <published_string>content</published_string> 
     <mmo>content</mmo> 
     <postcode>content</postcode> 
     <utmx>content</utmx> 
     <utmy>content</utmy> 
     <disposed>content</disposed> 
     <property_type>content</property_type> 
     <isprivate>content</isprivate> 
     <heading>content</heading> 
     <published>content</published> 
     <estate_price.price_suggestion>content</estate_price.price_suggestion> 
     <ownership_type>content</ownership_type> 
     <estate_size.useable_area>content</estate_size.useable_area> 
     <adid>content</adid> 
     <address>content</address> 
     <sqmtrprice>content</sqmtrprice> 
     <estate_size.primary_room_area>content</estate_size.primary_room_area> 
     <location>content</location> 
     <changed>content</changed> 
     <orgname>content</orgname> 
    </element> 
    <element id="1"> 
     <changed_string>content</changed_string> 
     <no_of_bedrooms>content</no_of_bedrooms> 
     <published_string>content</published_string> 
     <mmo>content</mmo> 
     <postcode>content</postcode> 
     <utmx>content</utmx> 
     <utmy>content</utmy> 
     <disposed>content</disposed> 
     <property_type>content</property_type> 
     <isprivate>content</isprivate> 
     <heading>content</heading> 
     <published>content</published> 
     <estate_price.price_suggestion>content</estate_price.price_suggestion> 
     <ownership_type>content</ownership_type> 
     <estate_size.useable_area>content</estate_size.useable_area> 
     <adid>content</adid> 
     <address>content</address> 
     <sqmtrprice>content</sqmtrprice> 
     <estate_size.primary_room_area>content</estate_size.primary_room_area> 
     <location>content</location> 
     <changed>content</changed> 
     <orgname>content</orgname> 
    </element> 
    </DataTag> 
</iad> 

Répondre

2

Nous aurions besoin que le schéma que vous validez vous indique si votre document est valide ou non. Property_price.price_suggestion Il n'y a rien à propos de estate_price.price_suggestion comme un nom d'élément qui est interdit par la spécification XML, mais votre schéma peut placer une contrainte sur le contenu et la structure de votre document qui n'autorise pas cet élément (ou tout autre élément) à être placé là où il est.

6

Il y a deux niveaux de bon document XML: well-formed et valide. Bien formé signifie que vous vous conformez à la norme XML et valide signifie que vous vous conformez à un schéma.

Le schéma est une spécification de l'élément que vous utilisez et de ce qu'il peut contenir dans l'autre. Vous pouvez utiliser DTD, XSD (schéma W3C), Relax NG, etc. pour spécifier le schéma.

1

Dave Markle a raison de dire que votre prologue XML ne devrait pas avoir les préfixes backslash (aussi, notez que c'est facultatif car il ne donne que les valeurs prolog par défaut). En ce qui concerne le point dans le nom de l'élément, si vous allez to the XML spec for start tags vous verrez qu'il contient un nom qui est lui-même constitué d'un NameStartChar et d'une séquence de NameChar. Le jeu NameChar contient le caractère ".", Donc avoir un . dans un nom de tag est parfaitement valide tant que ce n'est pas le premier caractère.

0

Votre fichier XML est bien formé et doit être analysé dans tout analyseur XML non validant. Par exemple, je l'ai utilisé XOM (de http://www.xom.nu)

 try { 
     new nu.xom.Builder().build(new StringReader(s)); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
    System.out.println("OK"); 

Cependant, il existe des outils XML qui font des hypothèses sur le type d'attributs. L'attribut id peut être supposé être de type ID. Ce type limite les valeurs id à des noms XML valides qui ne peuvent commencer qu'avec _A-Za-z (pas '0-9', '-' ou '.'). Ainsi, bien que votre XML soit bien formé, il peut être une mauvaise idée d'utiliser des nombres pour les identifiants. Comme déjà souligné SI vous avez une DTD ou un schéma, l'ID peut avoir été forcé d'être de type ID qui provoquerait un échec de validation.

Il n'est pas clair dans votre message si vous avez déjà eu un problème - si c'est le cas, la publication du message d'erreur pourrait vous aider.

Questions connexes