Поиск в 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();
}
}