none
Xml讀取問題 RRS feed

  • 問題

  • XML傳入的字串如下
    <COLLECTION>

               <AccVipBonus> (註:A)

                </ AccVipBonus >

     

               <UseCoupon>(註:B)

                       <COUPONNO>0000000001</COUPONNO>

    <CT_PWD>23347</CT_PWD>

    <SHOPNO>0002</SHOPNO>

    <HWSNO>03</HWSNO>

    <HSEQNO>472</HSEQNO>

    <HDATE>2011/10/10</HDATE>

    <SALEAMT>856</SALEAMT>

               </UseCoupon>

     

    <UseVipBonus>(註:C)

    </UseVipBonus>

    </COLLECTION>

     

    我如何讀取<UseCoupon> </UseCoupon 之間的給的值呢?還要能判斷是否為空值就跳過或做別的判斷。

     

    新手上路,麻煩大家解答了!謝謝


    • 已編輯 Minna1012 2011年11月22日 上午 06:09
    2011年11月22日 上午 06:07

解答

  • test.xml為你上面的xml。

     

    XmlDocument xdoc = new XmlDocument();
    xdoc.Load(@"f:\test.xml");
    XmlNode node = xdoc.SelectSingleNode(@"//AccVipBonus");
    string AccVipBonusText = string.Empty;
    if (node != null)
    {
    	AccVipBonusText = node.InnerText;
    }
    



    如果像UseCoupon裡面有Text & 其他的Child的話,Text也會被當成是一個Child哦!
    所以取Text的話就用 node.ChildNodes[0].InnerText
    其他的依序往下取! node.ChildNodes[1].InnerText

    當然,取前要判斷node.ChildNodes.Count是否大於0哦!

     


    亂馬客blog: http://www.dotblogs.com.tw/rainmaker/
    • 已編輯 亂馬客 2011年11月22日 上午 06:46
    • 已標示為解答 Minna1012 2011年11月22日 上午 08:12
    2011年11月22日 上午 06:16
  • 讀xml string的話,就改成 xdoc.LoadXml(@"your xml string");
    亂馬客blog: http://www.dotblogs.com.tw/rainmaker/
    • 已標示為解答 Minna1012 2011年11月22日 上午 08:12
    2011年11月22日 上午 08:04

所有回覆

  • test.xml為你上面的xml。

     

    XmlDocument xdoc = new XmlDocument();
    xdoc.Load(@"f:\test.xml");
    XmlNode node = xdoc.SelectSingleNode(@"//AccVipBonus");
    string AccVipBonusText = string.Empty;
    if (node != null)
    {
    	AccVipBonusText = node.InnerText;
    }
    



    如果像UseCoupon裡面有Text & 其他的Child的話,Text也會被當成是一個Child哦!
    所以取Text的話就用 node.ChildNodes[0].InnerText
    其他的依序往下取! node.ChildNodes[1].InnerText

    當然,取前要判斷node.ChildNodes.Count是否大於0哦!

     


    亂馬客blog: http://www.dotblogs.com.tw/rainmaker/
    • 已編輯 亂馬客 2011年11月22日 上午 06:46
    • 已標示為解答 Minna1012 2011年11月22日 上午 08:12
    2011年11月22日 上午 06:16
  • 建議先用XmlReaderSettings判斷XML文件的內容是否正確(包括element是否空值等等)? 若正確再做後續的處理
    2011年11月22日 上午 06:29
  • XML不是檔案,那要如何讀取?

    web service要讀取一欄位所輸入的XML的字串

    因為web service可能一次只呼叫一支,也可能一次呼叫二支以上,

    所以要把  <AccVipBonus> (註:A)</ AccVipBonus >,<UseCoupon>(註:B) </UseCoupon>, <UseVipBonus>(註:C)</UseVipBonus>

    全都寫在XML字串裡傳進來,再去判斷是否有值,有值的話要讀取值再去做後續的動作。

    ^^"新手沒有書可以參考,只好在網路上找資料了!謝謝大家~

    2011年11月22日 上午 06:55
  • 讀xml string的話,就改成 xdoc.LoadXml(@"your xml string");
    亂馬客blog: http://www.dotblogs.com.tw/rainmaker/
    • 已標示為解答 Minna1012 2011年11月22日 上午 08:12
    2011年11月22日 上午 08:04
  • 如果是web service的話,那麼input/output的format應該是有固定的。建議您可以用XmlSerializer,並建立對應的Entity物件。讓程式碼裡面的判斷與商業邏輯,不再是一陀攤開的字串或xml,而是用物件的屬性來加以判斷。

    可以參考看看:http://www.dotblogs.com.tw/alonstar/archive/2010/01/24/13258.aspx


    若您的程式碼有SQL injection的問題,在修改完畢之前,我不願意給您任何解答。因為解決了您的程式問題,造成更大的系統漏洞問題,還不如讓程式壞掉。

    請參考:SQL injection簡介與解決方式

    常用資源參考:
    小弟的blog: In 91,wiki: my wiki
    2011年11月22日 上午 11:23