{"id":687,"date":"2008-12-02T23:52:02","date_gmt":"2008-12-02T22:52:02","guid":{"rendered":"http:\/\/soci.hu\/blog\/?p=687"},"modified":"2008-12-03T22:41:32","modified_gmt":"2008-12-03T21:41:32","slug":"vigyazni-az-xpathdocumenttel","status":"publish","type":"post","link":"https:\/\/soci.hu\/blog\/index.php\/2008\/12\/02\/vigyazni-az-xpathdocumenttel\/","title":{"rendered":"Vigy\u00e1zni az XPathDocumenttel"},"content":{"rendered":"<p>Egyik r\u00e9gi ismer\u0151s\u00f6m keresett meg egy el\u00e9g h\u00faz\u00f3s probl\u00e9m\u00e1val. Egy webszerviz egy saj\u00e1t t\u00edpusb\u00f3l k\u00e9t p\u00e9ld\u00e1nyt kap param\u00e9ter\u00fcl, \u00e1m csak az els\u0151 megy \u00e1t, a m\u00e1sodik null lesz. Ha t\u00f6mbben adj\u00e1k \u00e1t \u0151ket, akkor is. Ha felcser\u00e9lik a kliens proxy oldal\u00e1n, akkor is a m\u00e1sodik null.<br \/>\nA t\u00edpus saj\u00e1t XML Serializ\u00e1l\u00e1st haszn\u00e1l, ez m\u00e1r eleve gyan\u00fas volt, azonban els\u0151re nem t\u0171nt fel benne semmi ravaszs\u00e1g. Beraktam egy kis <a href=\"http:\/\/msdn.microsoft.com\/en-us\/library\/ms972353.aspx\">WebService Trace Extension<\/a> k\u00f3dot, hogy l\u00e1ssam, rendesen elk\u00fcldi-e a kliens a SOAP csomagot, de igen, a bor\u00edt\u00e9k s\u00e9rtetlen \u00e9s teljes volt.<br \/>\nA szerializ\u00e1l\u00f3 k\u00f3dot figyelmesebben megn\u00e9zve azt\u00e1n el\u0151bukkant a probl\u00e9ma. A saj\u00e1t serializ\u00e1l\u00e1suk nem direktben haszn\u00e1lta a kapott XmlReader-t, hanem egy XPathDocumenten kereszt\u00fcl. \u00cdgy magasabb absztrakci\u00f3s szinten lehet programozni, ami ebben az esetben nagy k\u00f6nnyebbs\u00e9g. Igen \u00e1m, de az XPathDocument cache-el. Nem csak sim\u00e1n, hanem el\u0151reolvas a dr\u00e1ga, ami neki j\u00f3, mert \u00edgy pl. meg tudja mondani van-e gyermekeleme egy elemnek, stb. Csakhogy eset\u00fcnkben annyira moh\u00f3 volt, hogy a kapott XmlReader-t teljesen v\u00e9gignyalta, \u00edgy az els\u0151 param\u00e9ter deserializ\u00e1l\u00e1sa ut\u00e1n a reader m\u00e1r a SOAP csomag v\u00e9g\u00e9n \u00e1llt, \u00edgy a k\u00f6vetkez\u0151 deserializ\u00e1l\u00e1s megkapta a nagy semmit.<br \/>\nPersze belegondolva semmi panasz nem lehet az XPathDocumentre, senki nem mondta, hogy nem olvashat el\u0151re. De els\u0151re ez nem esett le nekem se.<br \/>\nMi a megold\u00e1s erre a probl\u00e9m\u00e1ra? P\u0151r\u00e9n az XmlReadert kell haszn\u00e1lni, k\u00ednosan \u00fcgyelve arra, hogy minden t\u00edpus \u00e9s be\u00e1gyazott t\u00edpus pontosan csak annyit tekerje el\u0151re a readert, hogy a saj\u00e1t adatait ki tudja olvasni, egy centivel se el\u0151bbre. Disciplined programoz\u00f3 kell ehhez, mint ahogy a t\u0151zsdei keresked\u00e9shez is, <a href=\"http:\/\/www.amazon.com\/Come-Into-My-Trading-Room\/dp\/0471225347\">Elder<\/a> szerint. :)<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Egyik r\u00e9gi ismer\u0151s\u00f6m keresett meg egy el\u00e9g h\u00faz\u00f3s probl\u00e9m\u00e1val. Egy webszerviz egy saj\u00e1t t\u00edpusb\u00f3l k\u00e9t p\u00e9ld\u00e1nyt kap param\u00e9ter\u00fcl, \u00e1m csak az els\u0151&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-687","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/soci.hu\/blog\/index.php\/wp-json\/wp\/v2\/posts\/687","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/soci.hu\/blog\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/soci.hu\/blog\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/soci.hu\/blog\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/soci.hu\/blog\/index.php\/wp-json\/wp\/v2\/comments?post=687"}],"version-history":[{"count":2,"href":"https:\/\/soci.hu\/blog\/index.php\/wp-json\/wp\/v2\/posts\/687\/revisions"}],"predecessor-version":[{"id":689,"href":"https:\/\/soci.hu\/blog\/index.php\/wp-json\/wp\/v2\/posts\/687\/revisions\/689"}],"wp:attachment":[{"href":"https:\/\/soci.hu\/blog\/index.php\/wp-json\/wp\/v2\/media?parent=687"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/soci.hu\/blog\/index.php\/wp-json\/wp\/v2\/categories?post=687"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/soci.hu\/blog\/index.php\/wp-json\/wp\/v2\/tags?post=687"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}