none
XML的節點取法 RRS feed

  • 問題

  • 各位大大您們好

    我想請問一下

    在xml的格式中

    我會取這樣的節點

    < BRWID > A999 </ BRWID >

    < BRWHEADING > civica001 </ BRWHEADING >

    他們分別的寫法是

      If reader.NodeType = System.Xml.XmlNodeType.Element Then '取得節點
                    If reader.IsStartElement Then
                        If Not reader.IsEmptyElement Then
                            If reader.Name = "BRWID" Then
                                reader.Read()
                                contents = reader.Value
                            End If
                            If reader.Name = "BRWHEADING" Then
                                reader.Read()
                                contents1 = reader.Value
                            End If
                        End If
                    End If
                End If

    但是我想請問一下的是這樣的節點我該怎麼取<BDE><FLD><TEXT>daividwang@gmail.com</TEXT></FLD></BDE>

    麻煩各位大大不吝教導

    2010年9月14日 上午 05:29

解答

  • Dim doc As new XmlDocument()
    doc.Load(new FileStream("XMLFile1.xml", FileMode.Open))
    Dim node As XmlNode = doc.SelectSingleNode("/BDE/FLD/TEXT")

    MessageBox.Show(node.InnerText)

    • 已標示為解答 風過留痕 2010年9月14日 上午 06:38
    2010年9月14日 上午 06:14
  • StringReader sr = new StringReader(@"
    <BDK>
    <FLD>
    <CODE TBL=""ZBE"">C</CODE>
    </FLD>
    </BDK>
    ");
    using (XmlReader reader = XmlReader.Create(sr)) {
      while (reader.Read()) {
        if (reader.Name == "CODE") {
          string tbl = reader.GetAttribute("TBL");
          if(!string.IsNullOrEmpty(tbl)){
            string t = reader.ReadString();
          }
        }
      }
    }
    
    • 已標示為解答 風過留痕 2010年11月5日 下午 02:11
    2010年11月5日 上午 09:18
  • 大大我有些看不懂你寫的

    不過我修改成這樣

       '系所
                            If reader.Name = "BDK" Then
                                reader.ReadStartElement()
                                reader.ReadStartElement()
                                'strOutinstitute = reader.GetAttribute("TXT") '取這節點會顯示 資管系
                                reader.Read()
                                strOutinstitute = reader.ReadContentAsString()
                            End If

    非常謝謝大大的教導

    • 已標示為解答 風過留痕 2010年11月5日 下午 02:11
    2010年11月5日 下午 02:11

所有回覆

  • Dim doc As new XmlDocument()
    doc.Load(new FileStream("XMLFile1.xml", FileMode.Open))
    Dim node As XmlNode = doc.SelectSingleNode("/BDE/FLD/TEXT")

    MessageBox.Show(node.InnerText)

    • 已標示為解答 風過留痕 2010年9月14日 上午 06:38
    2010年9月14日 上午 06:14
  • 請教各位大大

    我有一個節點是

                               <BDK>
                                  <FLD>
                                    <CODE TBL="ZBE" TXT="資管系"> C </CODE>
                                  </FLD>
                                </BDK>

    我程式碼是這樣撰寫

    顯示出來"/BDK/FLD/CODE CODE TBL="ZBE" TXT="資管系""有錯

    請教各位大大怎麼擷取這一節點

    請各位大大不吝教導

    以下是程式碼的部份

       If reader.Name = "/BDK/FLD/CODE CODE TBL="ZBE" TXT="資管系"" Then
                                reader.Read()
                                strOutinstitute = reader.Value

                        End If
    非常謝謝各位大大

    2010年11月5日 上午 03:57
  • 請教各位大大

    我有一個節點是

                               <BDK>
                                  <FLD>
                                    <CODE TBL="ZBE" TXT="資管系"> C </CODE>
                                  </FLD>
                                </BDK>

    我程式碼是這樣撰寫

    顯示出來"/BDK/FLD/CODE CODE TBL="ZBE" TXT="資管系""有錯

    請教各位大大怎麼擷取這一節點

    請各位大大不吝教導

    以下是程式碼的部份

       If reader.Name = "/BDK/FLD/CODE CODE TBL="ZBE" TXT="資管系"" Then
                                reader.Read()
                                strOutinstitute = reader.Value

                        End If
    非常謝謝各位大大


    我後來程式碼改為

     '系所
                            If reader.Name = "/BDK/FLD/CODE CODE TBL=ZBE TXT=資管系" Then
                                reader.Read()
                                strOutinstitute = reader.Value
                            End If

    不曉得是否正確

    請麻煩各位大大不吝教導

    2010年11月5日 上午 04:06
  • 我發現XML的格式有錯 因此有改過XML的格式

    我改成這樣

    - < BDK >
    - < FLD >
      < CODE TBL =" ZBE " > C </ CODE >
      </ FLD >
      </ BDK >
    不過
    程式碼依然取不到節點的 C 值
    請各位大大不吝指教
    2010年11月5日 上午 08:39
  • StringReader sr = new StringReader(@"
    <BDK>
    <FLD>
    <CODE TBL=""ZBE"">C</CODE>
    </FLD>
    </BDK>
    ");
    using (XmlReader reader = XmlReader.Create(sr)) {
      while (reader.Read()) {
        if (reader.Name == "CODE") {
          string tbl = reader.GetAttribute("TBL");
          if(!string.IsNullOrEmpty(tbl)){
            string t = reader.ReadString();
          }
        }
      }
    }
    
    • 已標示為解答 風過留痕 2010年11月5日 下午 02:11
    2010年11月5日 上午 09:18
  • 大大我有些看不懂你寫的

    不過我修改成這樣

       '系所
                            If reader.Name = "BDK" Then
                                reader.ReadStartElement()
                                reader.ReadStartElement()
                                'strOutinstitute = reader.GetAttribute("TXT") '取這節點會顯示 資管系
                                reader.Read()
                                strOutinstitute = reader.ReadContentAsString()
                            End If

    非常謝謝大大的教導

    • 已標示為解答 風過留痕 2010年11月5日 下午 02:11
    2010年11月5日 下午 02:11