Laden...

XML Attribut (URL) wird nicht 100% ausgelesen?

Erstellt von Taki Haki vor 15 Jahren Letzter Beitrag vor 15 Jahren 1.404 Views
Taki Haki Themenstarter:in
168 Beiträge seit 2005
vor 15 Jahren
XML Attribut (URL) wird nicht 100% ausgelesen?

Hallo,

ich habe mir per HttpWebRequest eine XML Datei empfangen und möchte diese nun auslesen. Mein Problem in der XML Datei sind Attribute in denen eine URL steht

Beispiel: <sdv1:Endpoint Location="http://192.168.0.2:80/soap/services/CardService_v1"/>

ich navigiere durch die XML Datei mit einem XmLTextReader und lese dann das entsprechende Attribut aus ABER es fehlt der Port in der Url.

Statt http://192.168.0.2:80/soap/services/CardService_v1 habe ich ein http://192.168.0.2/soap/services/CardService_v1 erhalten. Woran liegt das und wie bekomme ich den korrekten Attributswert gelesen?

Hier mein Code


                HttpWebResponse httpWebResponse = (HttpWebResponse)httpWebRequest.GetResponse();

                //string s = new StreamReader(httpWebResponse.GetResponseStream()).ReadToEnd();
                
                Stream stream = (Stream)httpWebResponse.GetResponseStream();

                XmlTextReader xmlTextReader = new XmlTextReader(stream);
                XmlReader xmlReaderSubtree;

                //bool bCardServiceTree = false;
                //bool bSignatureServiceTree = false;

                while (xmlTextReader.Read())
                {
                    if (xmlTextReader.Name == "sdv1:Service")
                    {
                        switch (xmlTextReader.GetAttribute("Name"))
                        {
                            case "CardService":
                                xmlReaderSubtree = (XmlReader)xmlTextReader.ReadSubtree();

                                while (xmlReaderSubtree.Read())
                                {
                                    if (xmlReaderSubtree.Name == "sdv1:Endpoint")
                                    {
                                        this.cardService.Url = xmlReaderSubtree.GetAttribute("Location");
                                    }
                                }

                                Messenger.ShowMessage("CardServiceEndPoint: " + this.cardService.Url, false);
                                //bCardServiceTree = true;
                                break;

                            case "SignatureService":
                                xmlReaderSubtree = (XmlReader)xmlTextReader.ReadSubtree();
                                while (xmlReaderSubtree.Read())
                                {
                                    if (xmlReaderSubtree.Name == "sdv1:Endpoint")
                                    {
                                        this.signatureService.Url = xmlReaderSubtree.GetAttribute("Location");
                                    }
                                }
                                Messenger.ShowMessage("SignatureServiceEndPoint: " + this.signatureService.Url, false);
                                //bSignatureServiceTree = true;
                                break;
                        }
                        
                    }
}

es muss an der GetAttribute Methode liegen, denn schaue ich mir die XML Datei komplett als String an. So finde ich darin die korrekten URLs mit Port. Ich dachte auch schon das es an dem XmlReader liegt, da ReadSubtree einem keinen XmlTextReader zurückgibt. Aber auch wenn ich die entsprechenden Attribute mit einem XmlTextReader auslese fehlt die Angabe des Ports.

mfg Taki

C
101 Beiträge seit 2008
vor 15 Jahren

Hallo Taki Haki

So wie du das Programm geschrieben hast sollte dies eigentlich stimmen.

Meiner Meinung nach könnte es vielleicht sein, dass this.cardService.Url den Port entfernt. Damit habe ich aber keine Erfahrung und kann dir somit auch nicht wirklich weiter helfen.

Trozdem viel Glück beim Lösen des Problems

Taki Haki Themenstarter:in
168 Beiträge seit 2005
vor 15 Jahren

Danke für den Tipp chanderegg 😃

daran lag es, hab mal geschaut was GetAttribute als String zurück gibt und da sind die Ports drin. Problem ist also gelöst.

mfg Taki