|
|
== 아래의 템플릿을 기재해 주시면 상세히 답변해 줄 수 있습니다. ==
1. 사용언어 (c#,vb.net) :C#
2. 사용툴 (VS2005, VS2008) :VS2008
3. 운영체제 (WIN 2003, XP) :비스타
4. 질문 :
xml파일
<?xml version="1.0" encoding="UTF-8"?>
<ChannelInfo>
<CH_Service>
<CH_ServiceInfoArray>
<CH_ServiceInfo>
<ID_CAS/>
<ID_SVC>12</ID_SVC>
<TP_SVC>1</TP_SVC>
<ID_PATP>0</ID_PATP>
<ID_PMTP>61</ID_PMTP>
<ID_ECMP/>
<ID_PCRP>62</ID_PCRP>
<NO_CH>7</NO_CH>
<NM_CH>test2</NM_CH>
<NM_MCIP>239.192.14.2</NM_MCIP>
<CNT_PORT>49220</CNT_PORT>
<CD_GENRE>100</CD_GENRE>
<ID_ISUPKG/>
<CD_AREA>101</CD_AREA>
<CD_PROC>0</CD_PROC>
<CD_HDSD>1</CD_HDSD>
<channel_image_text>epg_12.png|pip_12_1.png|pip_12_2.png</channel_image_text>
<CONTRY_CODE>KOR</CONTRY_CODE>
<RANK/>
<PAY>0</PAY>
<SamplingTime/>
<ElementaryStreamArray>
<ElementStream>
<ID_STREAMP>62</ID_STREAMP>
<TP_STREAM>27</TP_STREAM>
<NM_COMTAG>2</NM_COMTAG>
</ElementStream>
<ElementStream>
<ID_STREAMP>63</ID_STREAMP>
<TP_STREAM>129</TP_STREAM>
<NM_COMTAG>1</NM_COMTAG>
</ElementStream>
</ElementaryStreamArray>
<ProductIDArray>
<ProductID>
<ID_PRODUCT_CHAR>PP21000001</ID_PRODUCT_CHAR>
</ProductID>
<ProductID>
<ID_PRODUCT_CHAR>PP21000002</ID_PRODUCT_CHAR>
</ProductID>
<ProductID>
<ID_PRODUCT_CHAR>PP21000003</ID_PRODUCT_CHAR>
</ProductID>
<ProductID>
<ID_PRODUCT_CHAR>PP21000035</ID_PRODUCT_CHAR>
</ProductID>
</ProductIDArray>
</CH_ServiceInfo>
<CH_ServiceInfo>
<ID_CAS/>
<ID_SVC>11</ID_SVC>
<TP_SVC>1</TP_SVC>
<ID_PATP>0</ID_PATP>
<ID_PMTP>51</ID_PMTP>
<ID_ECMP/>
<ID_PCRP>52</ID_PCRP>
<NO_CH>9</NO_CH>
<NM_CH>test3</NM_CH>
<NM_MCIP>239.192.14.1</NM_MCIP>
<CNT_PORT>49220</CNT_PORT>
<CD_GENRE>100</CD_GENRE>
<ID_ISUPKG/>
<CD_AREA>999</CD_AREA>
<CD_PROC>0</CD_PROC>
<CD_HDSD>1</CD_HDSD>
<channel_image_text>epg_11.png|pip_11_1.png|pip_11_2.png</channel_image_text>
<CONTRY_CODE/>
<RANK/>
<PAY/>
<SamplingTime/>
<ElementaryStreamArray>
<ElementStream>
<ID_STREAMP>52</ID_STREAMP>
<TP_STREAM>27</TP_STREAM>
<NM_COMTAG>2</NM_COMTAG>
</ElementStream>
<ElementStream>
<ID_STREAMP>53</ID_STREAMP>
<TP_STREAM>129</TP_STREAM>
<NM_COMTAG>1</NM_COMTAG>
</ElementStream>
</ElementaryStreamArray>
<ProductIDArray>
<ProductID>
<ID_PRODUCT_CHAR>PP21000002</ID_PRODUCT_CHAR>
</ProductID>
<ProductID>
<ID_PRODUCT_CHAR>PP21000001</ID_PRODUCT_CHAR>
</ProductID>
<ProductID>
<ID_PRODUCT_CHAR>PP21000003</ID_PRODUCT_CHAR>
</ProductID>
<ProductID>
<ID_PRODUCT_CHAR>PP21000035</ID_PRODUCT_CHAR>
</ProductID>
</ProductIDArray>
</CH_ServiceInfo>
</CH_ServiceInfoArray>
</CH_Service>
</ChannelInfo>
c#코드입니다.
const string firNode = "/ChannelInfo/CH_Service/CH_ServiceInfoArray/CH_ServiceInfo";
const string secNode = "/ChannelInfo/CH_Service/CH_ServiceInfoArray/CH_ServiceInfo/ElementaryStreamArray/ElementStream";
//livexmlitems.Clear();
XmlNodeList CHItems = Doc.SelectNodes(firNode);
for (int i=0; i<CHItems.Count;i++)
{
NM_CH = CHItems.Item(i).SelectSingleNode("NM_CH").InnerText;
if (CHItems.Item(i).SelectSingleNode("ElementaryStreamArray").Name == "ElementaryStreamArray")
{
XmlNodeList CHItems2 = Doc.SelectNodes(secNode); //여기가 잘못된것 같은데 못찾겠어요..ㅠㅠ
Console.Write(CHItems2.Count); //24개가 나오네요..ㅠㅠ 첫번째 CH_ServiceInfo 를 할때 2개만 나와야 하거든요..
for (int j = 0; j < CHItems2.Count; j++)
{
// Console.Write(CHItems2.Item(j).SelectSingleNode("ID_STREAMP").InnerText);
}
}
질문입니다..
위의 xml은 동적으로 변합니다..5개가 나올수 있고..10개가 나올수 있습니다.
위의 C#코드에서 요 노드를 읽어들일려면 어케 해야 하나요..
<ElementaryStreamArray>
<ElementStream>
<ID_STREAMP>52</ID_STREAMP>
<TP_STREAM>27</TP_STREAM>
<NM_COMTAG>2</NM_COMTAG>
</ElementStream>
<ElementStream>
<ID_STREAMP>53</ID_STREAMP>
<TP_STREAM>129</TP_STREAM>
<NM_COMTAG>1</NM_COMTAG>
</ElementStream>
</ElementaryStreamArray>
DB에는 CH_ServiceInfo를 기준으로 해서 데이터를 삽입을 해야 합니다.
ElementStream 쪽은 ||구분자로 저장을 할려고 합니다.
고수님들의 조언 부탁드립니다.
감사합니다.
|
|

첫댓글 예전에 구글링해서 찾은 소스 변환해 놓은게있었는데, 하드 포멧하는 바람에 없어졌네요. ㅋ점심시간에 다시 찾아보겠습니다. ^^
감사합니다..꼭 있었으면 좋겠네요..^^
http://blog.naver.com/donquis1999/130030843288 <= 여기서 소스 찾아서 했습니다.
여기도 이게 있넹...