2010-11-24 62 views
1

En utilisant Builder :: XmlMarkup pour créer un fichier XML. Je veux créer un tag sans contenu car l'API me force à le créer. Si j'utilise un blogComment faire pour que Builder crée <tag></tag> au lieu de <tag/>

xml.tag do 
end 

je reçois ce que je dois

<tag></tag> 

mais je le veux plus court

xml.mytag 

cela me donne

<mytag/> 

mais je veux

<mytag></mytag> 

que dois-je passer en option.

Kai concernant

+1

Pourquoi voulez-vous '' au lieu de '' ? Puisque la sortie est XML, les applications en aval ne doivent pas savoir ou se soucier de la différence. – LarsH

Répondre

2

Passez simplement la chaîne vide en tant que paramètre. xml.mytag('')

+1

Apparemment, cela ne fonctionne pas (plus?) Juste essayé cela et Builder apparemment essaie d'être intelligent et crée '' à la place – wich

2

Pourquoi voulez-vous <mytag></mytag> au lieu de <mytag/>? Puisque la sortie est XML, les applications en aval ne doivent pas savoir ou se soucier de la différence.

Selon la spécification Infoset (Appendix D point 7), « La différence entre les deux formes d'un élément vide: <foo/> et <foo></foo> » n'est pas représenté dans l'ensemble d'informations XML. Cela ne répond pas à votre question «comment», mais si vous découvrez que vous n'avez pas réellement besoin de faire ce que vous essayez de faire, cela peut vous éviter une chasse aux oies sauvages difficile et inutile.

+2

le problème est, Datev (le plus grand fournisseur de système de comptabilité allemand) me force à le faire. Je ne pense pas qu'ils changent leur api pour moi;) – toy

+1

@toy: compris. Bien que cela ne changerait pas le comportement de l'application pour * vous * ... ce serait parce qu'ils ont un bug, de sorte qu'ils prétendent consommer du XML, mais en fait, ils ont besoin d'un formatage XML. Quelqu'un devrait leur dire. En outre, il ne serait pas en train de changer leur API en soi, à moins que leur spécification précise spécifiquement que "la forme courte de l'élément vide n'est pas autorisée (ou signifie quelque chose de différent)". Mais je comprends, la réalité est qu'ils ne vont pas le réparer demain! – LarsH

1

ok chaîne vide est agréable, un autre un-ligne-way est le bloc vide que j'ai découvert.

xml.mytag{}