Avatar billede henrikgn Nybegynder
29. maj 2008 - 15:08 Der er 7 kommentarer og
1 løsning

Tilføje attribut til xml tag

Hej

Jeg har et xml fil, som følger:

<husdyr>
  <dyr>
    <art>Kat</art>
    <alder>5</alder>
  </dyr>
</husdyr>

Til dette dokument (dyr.xml) vil jeg gerne have tilføjet en attribut til et eksisterende element - her mit top-element "husdyr". Den skal se sådan ud: <husdyr kategori="alle">.

Hvordan kan jeg tilføje denne attribut til mit eksisterende xml-tag?
Avatar billede arne_v Ekspert
29. maj 2008 - 15:13 #1
Laes ind i et XmlDocument, find husdyr elementet og lav noget a la:

        XmlAttribute kategori = doc.CreateAttribute("kategori");
        kategori.Value = "alle";
        husdyr.Attributes.Append(kategori);
Avatar billede henrikgn Nybegynder
29. maj 2008 - 15:22 #2
Tak for svaret. Ok, jeg gør som følger:

XmlTextReader xtr = new XmlTextReader("husdyr.xml");
XmlDocument husdyr = new XmlDocument();
husdyr.Load(xtr);

Så er xml'en læst ind i XmlDocument'et. Herefter bruger jeg din kode ovenfor:

XmlAttribute kategori = doc.CreateAttribute("kategori");
kategori.Value = "alle";
husdyr.Attributes.Append(kategori);

Nu vil jeg så gerne have min (nye) xml tilbage i en XmlTextReader, da jeg skal bruge denne senere i min kode. Kan jeg få xml'et fra XmlDocument tilbage til en XmlTextReader på en måde?
Avatar billede henrikgn Nybegynder
29. maj 2008 - 15:26 #3
Men hov, jeg mangler vist at finde husdyr elementet. Ellers ved den vel ikke, hvor den skal tilføje attributten?
Avatar billede arne_v Ekspert
29. maj 2008 - 15:35 #4
proev:

XmlElement husdyr = (XmlElement)doc.SelectSingleNode("//husdyr");
Avatar billede arne_v Ekspert
29. maj 2008 - 15:35 #5
Hvorfor vil du bruge XmlReader og ikke bare hive ud af XmLDocument ?
Avatar billede henrikgn Nybegynder
29. maj 2008 - 15:41 #6
Fordi jeg skal bruge en XmlValidatingReader senere, og den tager en XmlTextReader som input, og ikke et XmlDocument. Derfor skal min xml (med den nye attribut) være i en XmlTextReader.

Kan man ikke få en XmlTextReader til at læse fra et XmlDocument?
Avatar billede arne_v Ekspert
31. maj 2008 - 23:22 #7
Ikke direkte. Men du kan vel gemme til en MemoryStream og læse fra den igen.
Avatar billede arne_v Ekspert
29. august 2008 - 02:44 #8
OK ?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester