logi sisse meist KKK

Kuna siin teemat foorumi moel arendada ei saa, aga mul tekkis väga sarnane probleem, siis küsin juurde sarnase küsimuse.

Kood:

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

XML:

<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>
      <connectedDevicesResponse xmlns="http://default.eu">
         <connectedDevicesReturn xsi:type="xsd:string">12345</connectedDevicesReturn>
          <connectedDevicesReturn xsi:type="xsd:string">67890</connectedDevicesReturn>
     </connectedDevicesResponse>
   </soapenv:Body>
</soapenv:Envelope>

Häda on selles, et L päring on alati tühi, ta ei leia kuidagi connectedDevicesResponse tippu üles. Erinevalt eelmisest näitest defineeritakse connectedDevicesResponse all vaikimisi nimeruum. Ma ei tea, kuidas see võib XPath-päringule saatuslikuks saada.

küsitud Apr 24 '13 at 12:00

Teet65's gravatar image

Teet65
174911

converted to question Apr 24 '13 at 12:32

Tambet%20Matiisen's gravatar image

Tambet Matiisen ♦♦
77781125


Nagu isegi oled aru saanud, siis connectedDevicesResponse ei ole mitte tühjas nimeruumis, vaid "http://default.eu" nimeruumis. Ma ei ole päris kindel, kuidas C#-s tühja nimeruumi ümberdefineerimine käib, aga see pole ka vajalik. Sest nimeruumi prefiks on tegelikult ebaoluline, oluline on nimeruumi URL. Ehk siis minu meelest võiks töötada umbes järgmine koodijupp:

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

vastatud Apr 24 '13 at 12:35

Tambet%20Matiisen's gravatar image

Tambet Matiisen ♦♦
77781125

Aitäh, töötas, jälle targem!

(Apr 24 '13 at 13:25) 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
×3

küsitud: Apr 24 '13 at 12:00

nähtud: 10,179 korda

viimati uuendatud: Apr 24 '13 at 13:25

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