6
votes

Xmlwritre écrit vide xmlns

J'utilise le code suivant pour initialiser un xmldocument xxx pré>

plus loin dans le processus, j'écris certaines valeurs à l'aide du code suivant P>

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">
  <Placemark xmlns="">
    <!-- -->   
  </Placemark>
</kml>


2 commentaires

Pourquoi voulez-vous un xmlns rempli? L'espace de noms est la même chose du noeud parent.


@onof - Je ne veux pas de xmlns remplis, j'ai essayé sans commencer et puis avec pensant que c'était mieux. Voir le code révisé.


6 Réponses :


0
votes

owriter.writestartelement ("Platemark"); devrait fonctionner, car le noeud parent a déjà le bon espace de noms.


1 commentaires

C'était comme ça que j'ai eu le code initialement et que cela donne aux XMLN vides. J'ai changé mon code pour le refléter, mettre l'espace de noms dans la rédaction de la plate-forme ne permettra pas d'écrire les éléments.



0
votes

Avez-vous essayé:

oWriter.WriteStartElement("kml", "Placemark", "kml");


1 commentaires

Je suppose que tu voulais dire kml non klm; édité sur cette hypothèse. Cela ne fonctionne toujours pas.



3
votes

J'ai corrigé le problème en créant le document avec le code suivant (aucun espace de noms dans l'élément de document) xxx pré>

et en le sauveillant avec le code suivant pour définir l'espace de noms avant la sauvegarde p>

moDocument.DocumentElement.SetAttribute("xmlns", msNamespace);
moDocument.Save(msFilePath);


2 commentaires

Il peut être valide, mais c'est une mauvaise pratique.


@Jason - sauf si vous pouvez offrir un «bon» moyen de le faire, cela n'est pas une «mauvaise» pratique; C'est le seul moyen d'y parvenir!



0
votes

Vous avez besoin de xxx

sinon, l'élément de la plateforme est mis dans l'espace de noms NULL, c'est pourquoi l'attribut xmlns = "" est ajouté lorsque vous serialisez le XML .


2 commentaires

Vous voulez dire que vous faites cela, et cela sertialise toujours avec XMLNS = "" sur l'élément de la plate-forme? Ou autre chose?


Même si vous faites que vous obtenez toujours xmlns = "" sur l'élément de la plate-forme.



1
votes

Ceci est un ancien poste, mais juste pour éviter de futures mauvaises pratiques; Vous devriez jamais déclarer l'espace de nom xmlns dans un document XML, c'est donc la cause de la raison pour laquelle vous obtenez des nœuds vides puisque vous faites quelque chose que le xmldocument n'est pas censé faire.

Le préfixe XMLNS est utilisé uniquement pour déclarer des liaisons d'espace de noms et est par Définition liée au nom de l'espace de noms http://www.w3.org/2000/xmlns/ . Ça ne doit pas être déclaré. D'autres préfixes ne doivent pas être liés à cela nom d'espace de noms, et il ne doit pas être déclaré comme l'espace de noms par défaut. Les noms d'éléments ne doivent pas avoir le préfixe XMLNS.

Source: http://www.w3.org/tr / REC-XML-NOMS / # NS-DÉCLA


0 commentaires

0
votes

Le code suivant a fonctionné pour moi ( source ): xxx


0 commentaires