Поиск в XML по условию - C#
Формулировка задачи:
Всем привет, я НУБик в этом деле и знаю что сейчас посыпятся на меня упреки, но все же прошу помощи.
Пишу программу на C# для обработки данных в XML файле (на поиск незаполненных полей, на неверные данные, и т.д.).
И вот вопрос: как мне сделать так что бы при вводе , к примеру, в стоку тексбокса значения тэга <ID_PAC>, в "листе" отображались данные связанные с этим ID_PAC.
Вот сам файл:
<?xml version="1.0" standalone="yes"?> <ZL_LIST xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <ZAP> <N_ZAP>1</N_ZAP> <PR_NOV>0</PR_NOV> <PACIENT> <ID_PAC>7</ID_PAC> <VPOLIS>3</VPOLIS> <NPOLIS>7554110888000272</NPOLIS> <ST_OKATO>76000000000</ST_OKATO> <SMO>75001</SMO> <SMO_OGRN>1027501157386</SMO_OGRN> <SMO_OK>76000</SMO_OK> <SMO_NAM>ГК "ЗАБАЙКАЛМЕДСТРАХ"</SMO_NAM> <NOVOR>0</NOVOR> </PACIENT> <SLUCH> <IDCASE>22417</IDCASE> <USL_OK>3</USL_OK> <VIDPOM>31</VIDPOM> <FOR_POM>3</FOR_POM> <LPU>750109</LPU> <LPU_1>1</LPU_1> <PODR>1026</PODR> <PROFIL>53</PROFIL> <DET>0</DET> <NHISTORY>7/2</NHISTORY> <DATE_1>2015-01-30</DATE_1> <DATE_2>2015-01-30</DATE_2> <DS1>Z00.0</DS1> <RSLT>301</RSLT> <ISHOD>304</ISHOD> <PRVS>1</PRVS> <VERS_SPEC>V004</VERS_SPEC> <IDDOKT>055-697-812 10</IDDOKT> <IDSP>29</IDSP> <ED_COL>1</ED_COL> <TARIF>261,14</TARIF> <SUMV>261,14</SUMV> <SUMP /> </SLUCH> </ZAP> <PERS> <ID_PAC>7</ID_PAC> <FAM>ШЕВЧЕНКО</FAM> <IM>НЕТ</IM> <OT>НЕТ</OT> <W>2</W> <DR>2015-01-24</DR> <FAM_P>ШЕВЧЕНКО</FAM_P> <IM_P>ЕКАТЕРИНА</IM_P> <OT_P>СЕРГЕЕВНА</OT_P> <W_P>2</W_P> <DR_P>1988-09-02</DR_P> <OKATOG>76401000000</OKATOG> <OKATOP>76401000000</OKATOP> <DOST>1</DOST> <DOST>3</DOST> </PERS> </ZL_LIST>
Решение задачи: «Поиск в XML по условию»
textual
Листинг программы
using System; using System.Xml; using System.Collections.Generic; class cyb23 { public static void Main() { string strXML=@"<?xml version=""1.0"" standalone=""yes""?> <ZL_LIST xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance""> <ZAP> <N_ZAP>1</N_ZAP> <PR_NOV>0</PR_NOV> <PACIENT> <ID_PAC>7</ID_PAC> <VPOLIS>3</VPOLIS> <NPOLIS>7554110888000272</NPOLIS> <ST_OKATO>76000000000</ST_OKATO> <SMO>75001</SMO> <SMO_OGRN>1027501157386</SMO_OGRN> <SMO_OK>76000</SMO_OK> <SMO_NAM>ГК ""ЗАБАЙКАЛМЕДСТРАХ""</SMO_NAM> <NOVOR>0</NOVOR> </PACIENT> <SLUCH> <IDCASE>22417</IDCASE> <USL_OK>3</USL_OK> <VIDPOM>31</VIDPOM> <FOR_POM>3</FOR_POM> <LPU>750109</LPU> <LPU_1>1</LPU_1> <PODR>1026</PODR> <PROFIL>53</PROFIL> <DET>0</DET> <NHISTORY>7/2</NHISTORY> <DATE_1>2015-01-30</DATE_1> <DATE_2>2015-01-30</DATE_2> <DS1>Z00.0</DS1> <RSLT>301</RSLT> <ISHOD>304</ISHOD> <PRVS>1</PRVS> <VERS_SPEC>V004</VERS_SPEC> <IDDOKT>055-697-812 10</IDDOKT> <IDSP>29</IDSP> <ED_COL>1</ED_COL> <TARIF>261,14</TARIF> <SUMV>261,14</SUMV> <SUMP /> </SLUCH> </ZAP> <PERS> <ID_PAC>7</ID_PAC> <FAM>ШЕВЧЕНКО</FAM> <IM>НЕТ</IM> <OT>НЕТ</OT> <W>2</W> <DR>2015-01-24</DR> <FAM_P>ШЕВЧЕНКО</FAM_P> <IM_P>ЕКАТЕРИНА</IM_P> <OT_P>СЕРГЕЕВНА</OT_P> <W_P>2</W_P> <DR_P>1988-09-02</DR_P> <OKATOG>76401000000</OKATOG> <OKATOP>76401000000</OKATOP> <DOST>1</DOST> <DOST>3</DOST> </PERS> </ZL_LIST>"; XmlDocument d=new XmlDocument(); d.LoadXml(strXML); Dictionary<string,string> dInf=new Dictionary<string, string>(); int k=7; XmlNodeList nn=d.SelectNodes(@"//*[ID_PAC="+k+"]"); foreach (XmlNode n in nn) foreach (XmlNode ch in n.ChildNodes) { dInf[ch.Name]=ch.InnerText; Console.WriteLine("{0}: {1}", ch.Name, ch.InnerText); } Console.ReadLine(); } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д