Parsing a poorly constructed XML file in VB.NET -
Parsing a poorly constructed XML file in VB.NET -
i refer xml file poorly constructed due fact want stored across several elements named "data" instead of having appropriately named elements. xml returned api phone call of programme i'm integrating (goldmine crm), can not influence how xml constructed.
here xml:
<gmapi call="getactivewindowslist"> <status code="1">success</status> <data name="windowslist"> <data name="window"> <data name="hwnd">2952796</data> <data name="windowname">dialogscheduledefault</data> <data name="windowinternalname">dialog: 7220</data> <data name="caption">schedule next action</data> <data name="windowrect"> <data name="left">1032</data> <data name="right">1550</data> <data name="bottom">727</data> <data name="top">177</data> </data> <data name="clientrect"> <data name="left">1035</data> <data name="right">1547</data> <data name="bottom">724</data> <data name="top">202</data> </data> <data name="controls"> <data name="#32770"> <data name="enabled">1</data> <data name="visible">1</data> <data name="parentid">2952796</data> <data name="hwnd">5574210</data> <data name="id">0</data> <data name="text">detail</data> <data name="controls"> <data name="checkboxbutton"> <data name="enabled">1</data> <data name="visible">1</data> <data name="parentid">5574210</data> <data name="hwnd">3083840</data> <data name="id">-1</data> </data> <data name="checkboxbutton"> <data name="enabled">1</data> <data name="visible">1</data> <data name="parentid">5574210</data> <data name="hwnd">3345982</data> <data name="id">1022</data> <data name="text">lin&k selected contact:</data> </data> <data name="edit"> <data name="enabled">0</data> <data name="visible">1</data> <data name="parentid">5574210</data> <data name="hwnd">3411510</data> <data name="id">104</data> <data name="text">bea defkow</data> </data> <data name="button"> <data name="enabled">1</data> <data name="visible">1</data> <data name="parentid">5574210</data> <data name="hwnd">4460084</data> <data name="id">1047</data> </data> <data name="button"> <data name="enabled">1</data> <data name="visible">1</data> <data name="parentid">5574210</data> <data name="hwnd">3149362</data> <data name="id">52325</data> </data> <data name="static"> <data name="enabled">1</data> <data name="visible">1</data> <data name="parentid">5574210</data> <data name="hwnd">2952750</data> <data name="id">-1</data> <data name="text">&reference:</data> </data> <data name="f2edit"> <data name="enabled">1</data> <data name="visible">1</data> <data name="parentid">5574210</data> <data name="hwnd">4001322</data> <data name="id">1016</data> <data name="text">cr</data> </data> <data name="checkboxbutton"> <data name="enabled">1</data> <data name="visible">1</data> <data name="parentid">5574210</data> <data name="hwnd">4457274</data> <data name="id">99</data> </data> <data name="static"> <data name="enabled">1</data> <data name="visible">1</data> <data name="parentid">5574210</data> <data name="hwnd">4197926</data> <data name="id">-1</data> <data name="text">&notes:</data> </data> <data name="gm_cal_html_edit_ctrl"> <data name="enabled">1</data> <data name="visible">1</data> <data name="parentid">5574210</data> <data name="hwnd">5246490</data> <data name="id">1017</data> <data name="text"><!doctype html public "-//w3c//dtd html 4.0 transitional//en"> <html><head> <style type=text/css> p, ul, ol, dl, dir, menu, pre { margin: 0 auto;}</style> <meta name=generator content="mshtml 11.00.9600.17041"></head><body leftmargin=1 rightmargin=1 topmargin=1><font size=2 face="segoe ui"><div>cn</div></font></body></html></data> <data name="controls"> <data name="toolbarwindow32"> <data name="enabled">1</data> <data name="visible">1</data> <data name="parentid">5246490</data> <data name="hwnd">4066838</data> <data name="id">1002</data> </data> <data name="atl:01a98e08"> <data name="enabled">1</data> <data name="visible">1</data> <data name="parentid">5246490</data> <data name="hwnd">3214868</data> <data name="id">1001</data> <data name="controls"> <data name="shell embedding"> <data name="enabled">1</data> <data name="visible">1</data> <data name="parentid">3214868</data> <data name="hwnd">3018258</data> <data name="id">0</data> <data name="controls"> <data name="shell docobject view"> <data name="enabled">1</data> <data name="visible">1</data> <data name="parentid">3018258</data> <data name="hwnd">3018254</data> <data name="id">0</data> <data name="controls"> <data name="internet explorer_server"> <data name="enabled">1</data> <data name="visible">1</data> <data name="parentid">3018254</data> <data name="hwnd">3018252</data> <data name="id">0</data> </data> </data> </data> </data> </data> </data> </data> </data> </data> <data name="checkboxbutton"> <data name="enabled">1</data> <data name="visible">1</data> <data name="parentid">5574210</data> <data name="hwnd">3018250</data> <data name="id">-1</data> <data name="text"> options </data> </data> <data name="static"> <data name="enabled">1</data> <data name="visible">1</data> <data name="parentid">5574210</data> <data name="hwnd">3018232</data> <data name="id">-1</data> <data name="text">acti&vity:</data> </data> <data name="combobox"> <data name="enabled">1</data> <data name="visible">1</data> <data name="parentid">5574210</data> <data name="hwnd">3280372</data> <data name="id">1039</data> <data name="text">next actn</data> </data> <data name="static"> <data name="enabled">1</data> <data name="visible">1</data> <data name="parentid">5574210</data> <data name="hwnd">3280368</data> <data name="id">-1</data> <data name="text">cod&e:</data> </data> <data name="f2edit"> <data name="enabled">1</data> <data name="visible">1</data> <data name="parentid">5574210</data> <data name="hwnd">5246436</data> <data name="id">1012</data> </data> <data name="checkboxbutton"> <data name="enabled">1</data> <data name="visible">1</data> <data name="parentid">5574210</data> <data name="hwnd">454363506</data> <data name="id">99</data> </data> <data name="static"> <data name="enabled">1</data> <data name="visible">1</data> <data name="parentid">5574210</data> <data name="hwnd">3411422</data> <data name="id">-1</data> <data name="text">c&olor:</data> </data> <data name="combobox"> <data name="enabled">1</data> <data name="visible">1</data> <data name="parentid">5574210</data> <data name="hwnd">3411394</data> <data name="id">1037</data> </data> <data name="static"> <data name="enabled">1</data> <data name="visible">1</data> <data name="parentid">5574210</data> <data name="hwnd">3411314</data> <data name="id">291</data> <data name="text">opportunity / &project:</data> </data> <data name="combobox"> <data name="enabled">1</data> <data name="visible">1</data> <data name="parentid">5574210</data> <data name="hwnd">3411312</data> <data name="id">1040</data> <data name="text">(none)</data> </data> <data name="button"> <data name="enabled">1</data> <data name="visible">1</data> <data name="parentid">5574210</data> <data name="hwnd">3542370</data> <data name="id">2010</data> <data name="text">new</data> </data> <data name="static"> <data name="enabled">1</data> <data name="visible">1</data> <data name="parentid">5574210</data> <data name="hwnd">20778328</data> <data name="id">292</data> <data name="text">or case:</data> </data> <data name="combobox"> <data name="enabled">1</data> <data name="visible">1</data> <data name="parentid">5574210</data> <data name="hwnd">3476822</data> <data name="id">52168</data> <data name="text">(none)</data> </data> <data name="button"> <data name="enabled">1</data> <data name="visible">1</data> <data name="parentid">5574210</data> <data name="hwnd">3345734</data> <data name="id">2011</data> <data name="text">new</data> </data> <data name="checkboxbutton"> <data name="enabled">1</data> <data name="visible">1</data> <data name="parentid">5574210</data> <data name="hwnd">3345724</data> <data name="id">-1</data> <data name="text">primary &user:</data> </data> <data name="combobox"> <data name="enabled">1</data> <data name="visible">1</data> <data name="parentid">5574210</data> <data name="hwnd">3345718</data> <data name="id">1011</data> <data name="text">rick ()</data> </data> <data name="checkboxbutton"> <data name="enabled">1</data> <data name="visible">1</data> <data name="parentid">5574210</data> <data name="hwnd">3345710</data> <data name="id">-1</data> <data name="text"> time </data> </data> <data name="button"> <data name="enabled">1</data> <data name="visible">0</data> <data name="parentid">5574210</data> <data name="hwnd">3345708</data> <data name="id">2067</data> <data name="text">recurring...</data> </data> <data name="static"> <data name="enabled">1</data> <data name="visible">1</data> <data name="parentid">5574210</data> <data name="hwnd">53742874</data> <data name="id">-1</data> <data name="text">&date:</data> </data> <data name="dateedit"> <data name="enabled">1</data> <data name="visible">1</data> <data name="parentid">5574210</data> <data name="hwnd">4787478</data> <data name="id">1013</data> <data name="text">6/25/2014</data> </data> <data name="checkboxbutton"> <data name="enabled">1</data> <data name="visible">1</data> <data name="parentid">5574210</data> <data name="hwnd">1442624</data> <data name="id">99</data> </data> <data name="static"> <data name="enabled">1</data> <data name="visible">1</data> <data name="parentid">5574210</data> <data name="hwnd">5311752</data> <data name="id">101</data> <data name="text">ti&me:</data> </data> <data name="timeedit"> <data name="enabled">1</data> <data name="visible">1</data> <data name="parentid">5574210</data> <data name="hwnd">5442822</data> <data name="id">1014</data> </data> <data name="checkboxbutton"> <data name="enabled">1</data> <data name="visible">1</data> <data name="parentid">5574210</data> <data name="hwnd">5899074</data> <data name="id">99</data> </data> <data name="static"> <data name="enabled">1</data> <data name="visible">1</data> <data name="parentid">5574210</data> <data name="hwnd">42142960</data> <data name="id">-1</data> <data name="text">durat&ion:</data> </data> <data name="edit"> <data name="enabled">1</data> <data name="visible">1</data> <data name="parentid">5574210</data> <data name="hwnd">6032574</data> <data name="id">1018</data> <data name="text">0</data> </data> <data name="msctls_updown32"> <data name="enabled">1</data> <data name="visible">1</data> <data name="parentid">5574210</data> <data name="hwnd">3214524</data> <data name="id">-1</data> </data> <data name="combobox"> <data name="enabled">1</data> <data name="visible">1</data> <data name="parentid">5574210</data> <data name="hwnd">5246130</data> <data name="id">1036</data> <data name="text">min </data> </data> <data name="checkboxbutton"> <data name="enabled">1</data> <data name="visible">1</data> <data name="parentid">5574210</data> <data name="hwnd">8457380</data> <data name="id">1023</data> <data name="text">a&larm:</data> </data> <data name="timeedit"> <data name="enabled">0</data> <data name="visible">1</data> <data name="parentid">5574210</data> <data name="hwnd">54725774</data> <data name="id">1032</data> </data> <data name="static"> <data name="enabled">1</data> <data name="visible">1</data> <data name="parentid">5574210</data> <data name="hwnd">5443466</data> <data name="id">-1</data> <data name="text">on:</data> </data> <data name="dateedit"> <data name="enabled">0</data> <data name="visible">1</data> <data name="parentid">5574210</data> <data name="hwnd">40765854</data> <data name="id">1033</data> </data> <data name="checkboxbutton"> <data name="enabled">1</data> <data name="visible">1</data> <data name="parentid">5574210</data> <data name="hwnd">1508158</data> <data name="id">-1</data> <data name="text">actions</data> </data> <data name="checkboxbutton"> <data name="enabled">1</data> <data name="visible">1</data> <data name="parentid">5574210</data> <data name="hwnd">1311400</data> <data name="id">1038</data> <data name="text">noti&fy via e-mail</data> </data> <data name="checkboxbutton"> <data name="enabled">1</data> <data name="visible">1</data> <data name="parentid">5574210</data> <data name="hwnd">6423206</data> <data name="id">1024</data> <data name="text">auto-generate r&svp</data> </data> <data name="checkboxbutton"> <data name="enabled">1</data> <data name="visible">1</data> <data name="parentid">5574210</data> <data name="hwnd">44630312</data> <data name="id">1034</data> <data name="text">mark priv&ate</data> </data> <data name="checkboxbutton"> <data name="enabled">1</data> <data name="visible">1</data> <data name="parentid">5574210</data> <data name="hwnd">6362818</data> <data name="id">1001</data> <data name="text">send request wit&h next actn to:</data> </data> <data name="combobox"> <data name="enabled">0</data> <data name="visible">1</data> <data name="parentid">5574210</data> <data name="hwnd">35193110</data> <data name="id">1009</data> <data name="text">contact(s)</data> <data name="controls"> <data name="edit"> <data name="enabled">0</data> <data name="visible">1</data> <data name="parentid">35193110</data> <data name="hwnd">2621498</data> <data name="id">1001</data> <data name="text">contact(s)</data> </data> </data> </data> <data name="static"> <data name="enabled">1</data> <data name="visible">1</data> <data name="parentid">5574210</data> <data name="hwnd">5641780</data> <data name="id">123</data> </data> <data name="static"> <data name="enabled">1</data> <data name="visible">0</data> <data name="parentid">5574210</data> <data name="hwnd">5308448</data> <data name="id">1163</data> <data name="text">rick </data> </data> <data name="static"> <data name="enabled">1</data> <data name="visible">0</data> <data name="parentid">5574210</data> <data name="hwnd">1441814</data> <data name="id">1164</data> <data name="text">rick </data> </data> <data name="listbox"> <data name="enabled">0</data> <data name="visible">0</data> <data name="parentid">5574210</data> <data name="hwnd">45681014</data> <data name="id">0</data> </data> <data name="listbox"> <data name="enabled">0</data> <data name="visible">0</data> <data name="parentid">5574210</data> <data name="hwnd">1311540</data> <data name="id">0</data> </data> <data name="listbox"> <data name="enabled">0</data> <data name="visible">0</data> <data name="parentid">5574210</data> <data name="hwnd">4396658</data> <data name="id">0</data> </data> </data> </data> <data name="radiobutton"> <data name="enabled">1</data> <data name="visible">1</data> <data name="parentid">2952796</data> <data name="hwnd">2952792</data> <data name="id">1</data> <data name="text">schedule</data> </data> <data name="button"> <data name="enabled">1</data> <data name="visible">1</data> <data name="parentid">2952796</data> <data name="hwnd">2952782</data> <data name="id">2</data> <data name="text">cancel</data> </data> <data name="button"> <data name="enabled">0</data> <data name="visible">0</data> <data name="parentid">2952796</data> <data name="hwnd">2952776</data> <data name="id">12321</data> <data name="text">apply</data> </data> <data name="button"> <data name="enabled">1</data> <data name="visible">0</data> <data name="parentid">2952796</data> <data name="hwnd">2952774</data> <data name="id">9</data> <data name="text">help</data> </data> <data name="systabcontrol32"> <data name="enabled">1</data> <data name="visible">1</data> <data name="parentid">2952796</data> <data name="hwnd">2952772</data> <data name="id">12320</data> </data> </data> </data> i'm looking function parses , returns few fields each, few nodes follows:
the parentid , hwnd branch info name id 1016 the parentid , hwnd branch info name id 1017 the parentid , hwnd branch info name id 1012 the parentid , hwnd branch info name id 1013i have no code supply portion of project far because nil workable plenty go on working on. i've never needed deep xml programming before of approaches confusing. i'm hoping kind souls able whip out without going through days of anguish went through, thanks!
this should it, using linq xml:
class="lang-vb prettyprint-override">dim myxml string = getxmlfromsomewhere() dim xml = xelement.parse(myxml) dim ids = { "1012", "1013", "1016", "1017" } dim result = d in xml...<data> d.@name = "id" andalso ids.contains(d.value) select id = d.value, parentid = (from x in d.parent.<data> x.@name = "parentid" select x.value).firstordefault(), hwnd = (from x in d.parent.<data> x.@name = "hwnd" select x.value).firstordefault() xml vb.net
Comments
Post a Comment