Avatar billede mungojerrie Nybegynder
10. februar 2005 - 13:04 Der er 8 kommentarer og
1 løsning

namespace og xmldocument

Hej

Jeg vil gerne vide hvordan jeg klarer at få denne xml dannet udfra et xmldocument:

<root xmlns:x="urn:1">
    <x:item/>
    <x:item/>
</x:root>

Jeg har set jeg kan skrive sådan, hvis jeg benytter en xmltextwriter, men den passer ikke lige ind i mit program.


XmlTextWriter w = new XmlTextWriter("c:\\test.xml", System.Text.Encoding.UTF8);
w.Formatting = Formatting.Indented;
w.WriteStartElement("root");
w.WriteAttributeString("xmlns", "x", null, "urn:1");
    w.WriteStartElement("item","urn:1");
    w.WriteEndElement();
    w.WriteStartElement("item","urn:1");
    w.WriteEndElement();
w.WriteEndElement();

Vil altså gerne kunne bygge videre på min :

XmlDocument doc = new XmlDocument();

ved at skabe noder og elementer og så komme til ovenstående xml resultat.
Avatar billede arne_v Ekspert
10. februar 2005 - 16:54 #1
Sker det ikke helt automatisk hvsi dit XmlDocument bruger det namespace ?
Avatar billede mungojerrie Nybegynder
10. februar 2005 - 17:11 #2
det er muligt, men så mangler jeg at finde ud af hvordan jeg får sat namespacet korrekt.....
Avatar billede arne_v Ekspert
10. februar 2005 - 17:26 #3
Godt spørgsmål.

        XmlDocument doc = new XmlDocument();
        XmlNode item1 = doc.CreateElement("item");
        XmlNode item2 = doc.CreateElement("item");
        XmlNode root = doc.CreateElement("x", "root", "urn:1");
        root.AppendChild(item1);
        root.AppendChild(item2);
        doc.AppendChild(root);
        doc.Save(Console.Out);

giver:

<?xml version="1.0" encoding="IBM437"?>
<x:root xmlns:x="urn:1">
  <item />
  <item />
</x:root>

jeg kan ikke helt få den vendt rigtigt.
Avatar billede jepsen999 Nybegynder
10. februar 2005 - 18:04 #4
XmlDocument doc = new XmlDocument();
XmlElement root = doc.CreateElement("x","root","urn:1");
XmlElement item1 = doc.CreateElement("x","item","urn:1");
XmlElement item2 = doc.CreateElement("x","item","urn:1");
root.AppendChild(item1);
root.AppendChild(item2);
doc.AppendChild(root);
doc.Save(Console.Out);

giver:
<?xml version="1.0" encoding="ibm850"?>
<x:root xmlns:x="urn:1">
  <x:item />
  <x:item />
</x:root>
Avatar billede arne_v Ekspert
10. februar 2005 - 18:20 #5
Jeg kunne altså også godt finde ud af at create item's ligesom root.

Problemet er at det skal være <root ikke <x:root !!!!
Avatar billede mungojerrie Nybegynder
10. februar 2005 - 20:17 #6
"flovt ansigt"!!
Beklager meget, har lavet en lille taste fejl, min xml skal se sådan ud:

<root xmlns:x="urn:1">
    <x:item/>
    <x:item/>
</root>

altså uden x'et i slut taget
Avatar billede arne_v Ekspert
10. februar 2005 - 20:21 #7
Det havde jeg ignoreret. Det er kunsten at få x= i attributten uden x: foran i element
som jeg ikke umidelbart kunne løse.
Avatar billede mungojerrie Nybegynder
10. februar 2005 - 20:24 #8
okay, jeg håbede så også at der var en løsning som gjorde unødvendigt for mig at skrive sådan hver gang jeg skal lave et element:
doc.CreateElement("x","item","urn:1");

Håbede det var muligt at angive et sted at alle elementer kunne prefix'es med en vilkårlig namespace....
Avatar billede mungojerrie Nybegynder
14. februar 2005 - 20:31 #9
takker for indsatsen og lukker :-)
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
Kategori
Kurser inden for grundlæggende programmering

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