Avatar billede bendixen Novice
20. november 2016 - 21:00 Der er 4 kommentarer og
1 løsning

XML

Hej
Jeg har følgende XML:
"<?xml version=\"1.0\" encoding=\"utf-8\"?><resource rel=\"contactPresence\" href=\"/ucwa/oauth/v1/applications/103315995678/people/lisa@kunde.dk/presence\" xmlns=\"http://schemas.microsoft.com/rtc/2012/03/ucwa\"><property name=\"availability\">Away</property><property name=\"deviceType\">PC</property><property name=\"lastActive\">2016-11-10T04:53:51.0000000</property></resource>"

Hvordan læser jeg den vha XMLreader

Jeg er kommer frem til følgende, men kan ikke gennemskue hvordan jeg læser værdierne ??

string a;
string xmlText = "<?xml version=\"1.0\" encoding=\"utf-8\"?><resource rel=\"contactPresence\" href=\"/ucwa/oauth/v1/applications/103315995678/people/lisa@kunde.dk/presence\" xmlns=\"http://schemas.microsoft.com/rtc/2012/03/ucwa\"><property name=\"availability\">Away</property><property name=\"deviceType\">PC</property><property name=\"lastActive\">2016-11-10T04:53:51.0000000</property></resource>";
XmlTextReader xml01 = new XmlTextReader(new StringReader(xmlText));
while (xml01.Read())
{
    Debug.WriteLine(xml01.Name);
    switch (xml01.Name)
    {
        case "property":
            switch (xml01.GetAttribute("name"))
            {

                case "availability":
                    a = "???";
                    break;
                case "deviceType":
                    a = "???";
                    break;
                case "lastActive":
                    a = "???";
                    break;
                default:
                    break;
            }
            break;
        default:
            break;
    }
}
Avatar billede arne_v Ekspert
20. november 2016 - 21:17 #1
Du skal nok teste paa start tag og saa akkumulere Text nodes indtil end tag.

Jeg har et eksemple i C# her:

http://www.vajhoej.dk/arne/articles/xmlproc.html#pull
Avatar billede arne_v Ekspert
20. november 2016 - 21:17 #2
Men hvis det ikke er nok, saa kan jeg lave et eksempoel med din XML. Senere.
Avatar billede arne_v Ekspert
21. november 2016 - 03:49 #3
Eksempel:


using System;
using System.IO;
using System.Text;
using System.Xml;

namespace E
{
    public class Program
    {
        public static void Main(string[] args)
        {
            string xmlText = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<resource rel=\"contactPresence\" href=\"/ucwa/oauth/v1/applications/103315995678/people/lisa@kunde.dk/presence\" xmlns=\"http://schemas.microsoft.com/rtc/2012/03/ucwa\">\r\n<property name=\"availability\">Away</property>\r\n<property name=\"deviceType\">PC</property>\r\n<property name=\"lastActive\">2016-11-10T04:53:51.0000000</property>\r\n</resource>";
            Console.WriteLine(xmlText);
            XmlTextReader xml01 = new XmlTextReader(new StringReader(xmlText));
            StringBuilder sb = new StringBuilder();
            string propnam = null;
            string propval = null;
            while (xml01.Read())
            {
                switch(xml01.NodeType)
                {
                    case XmlNodeType.Text:
                        sb.Append(xml01.Value);
                        break;
                    case XmlNodeType.Element:
                        if (xml01.Name == "property")
                        {
                            propnam = xml01.GetAttribute("name");
                            sb = new StringBuilder(); 
                        }
                        break;
                    case XmlNodeType.EndElement:
                        if (xml01.Name == "property")
                        {
                            propval = sb.ToString();
                            Console.WriteLine("{0} = {1}", propnam, propval);
                        }
                        break;
                }
            }
            Console.ReadKey();
        }
    }
}
Avatar billede bendixen Novice
21. november 2016 - 09:26 #4
Tusinde tak for en super god & hurtig løsning
Avatar billede arne_v Ekspert
21. november 2016 - 15:40 #5
Bemaerk at hvis den XML fil ikke er stor, saa er der andre og nemmere maader at laese den fil paa.

Styrken ved XmlReader er at den kan haandtere meget store file (eksempelvis en 10 GB fil).
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