logi sisse meist KKK

Mul on programm, mis peab käsitsi parsima SOAPi vastuseid, kuid SelectNodes annab alati tühja tulemuse.

Kood:

void parse(string result){
    XmlDocument XML = new XmlDocument();
    XML.LoadXml(result);
    XmlNamespaceManager nsm = new XmlNamespaceManager(XML.NameTable);
    nsm.AddNamespace("soapenv", "http://schemas.xmlsoap.org/soap/envelope/");
    XmlNodeList L = XML.DocumentElement.SelectNodes("/Body/connectedDevicesResponse/connectedDevicesReturn", nsm);
}

XML on järgmine:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body>
    <ns1:connectedDevicesResponse soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns1="com.connecty.mk30.webservices">
        <connectedDevicesReturn soapenc:arrayType="xsd:string[79]" xsi:type="soapenc:Array" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
            <connectedDevicesReturn xsi:type="xsd:string">1048033</connectedDevicesReturn>
            <connectedDevicesReturn xsi:type="xsd:string">3010571</connectedDevicesReturn>
        </connectedDevicesReturn>
    </ns1:connectedDevicesResponse>
</soapenv:Body>

Miskipärast on alati SelectNodes vastus tühi. Ma ei jaga hästi nimeruumide loogikat, Body kasutab soapenv nimeruumi, aga connectedDevicesResponse hoopis ns1 nimeruumi. Kus ma vea teen? Olen proovinud kirjutada päringus nimeruumid elementide ette, aga üheski kombinatsioonis ei ole päringut tööle saanud.

küsitud Feb 15 '13 at 16:07

Teet65's gravatar image

Teet65
175912

edited Feb 15 '13 at 16:09


Ma ei tea küll C#-st, aga üht-teist XML nimeruumidest. Pakun midagi sellist:

void parse(string result){
    XmlDocument XML = new XmlDocument();
    XML.LoadXml(result);
    XmlNamespaceManager nsm = new XmlNamespaceManager(XML.NameTable);
    nsm.AddNamespace("soapenv", "http://schemas.xmlsoap.org/soap/envelope/");
    nsm.AddNamespace("ns1", "com.connecty.mk30.webservices");
    XmlNodeList L = XML.DocumentElement.SelectNodes("/soapenv:Body/ns1:connectedDevicesResponse/connectedDevicesReturn", nsm);
}

Ehk siis Body tundub olevat nimeruumis http://schemas.xmlsoap.org/soap/envelope/, connectedDevicesResponse nimeruumis com.connecty.mk30.webservices ja connectedDevicesReturn üldse ilma nimeruumita, mis peaks olema tühi nimeruum, kuna vaikmisi nimeruumi pole ümber defineeritud.

link

vastatud Feb 15 '13 at 17:54

Tambet%20Matiisen's gravatar image

Tambet Matiisen ♦♦
77781125

Tänud, just ns1 nimeruumi registreerimine oligi puudu, ning nagu selgub, tuli päringusse kirjutada täispikk tee välja koos nimeruumidega. Sain oma koodi korda.

(Feb 15 '13 at 22:59) Teet65
Sinu vastus
lülita eelvaade

Jälgi seda küsimust

By Email:

Pärast sisselogimist saad tellida muudatuse teavitusi siit

By RSS:

Answers

Answers and Comments

Markdown Basics

  • *kaldkiri* või __kaldkiri__
  • **paks kiri** või __paks kiri__
  • link:[tekst](http://url.com/ "pealkiri")
  • pilt?![alt tekst](/path/img.jpg "pealkiri")
  • nummerdatud nimekiri: 1. Foo 2. Bar
  • to add a line break simply add two spaces to where you would like the new line to be.
  • põhilised HTML märgendid on samuti toetatud

Pinu tööpakkumised

kõik pakkumised »

Küsimuse sildid:

×3
×1
×1

küsitud: Feb 15 '13 at 16:07

nähtud: 2,174 korda

viimati uuendatud: Apr 24 '13 at 12:32

Litsents: Creative Commons Attribution License | Kontakt: info@pinu.ee