C# XML 读取 foreach 总是第一个值

Eri*_*rış 2 .net c# xml

我的 XML

<?xml version="1.0" encoding="UTF-8"?>
 <teklif>
 <bilgiler>
<firma>Firma Ad?</firma>
<aciklama>Aç?klama</aciklama>
<isim>Ad Soyad</isim>
<telefon>Telefon</telefon>
<eposta>E Posta</eposta>
<urunler>
  <urun>
    <resimDosyasi>Dosya Seçilmedi</resimDosyasi>
    <aciklama>Ürün Aç?klamas?</aciklama>
    <birim>3,00</birim>
    <miktar>1</miktar>
    <toplam>0,00</toplam>
  </urun>
  <urun>
    <resimDosyasi>Dosya Seçilmedi</resimDosyasi>
    <aciklama>Ürün Aç?klamas?</aciklama>
    <birim>5,00</birim>
    <miktar>1</miktar>
    <toplam>0,00</toplam>
  </urun>
  <urun>
    <resimDosyasi>Dosya Seçilmedi</resimDosyasi>
    <aciklama>aas</aciklama>
    <birim>2,00</birim>
    <miktar>1</miktar>
    <toplam>0,00</toplam>
  </urun>
</urunler>
Run Code Online (Sandbox Code Playgroud)

以及读取 XML 文件的 My Function

        XmlDocument doc = new XmlDocument();
        doc.Load(filename);
        XmlNodeList xmllist = doc.SelectNodes("/teklif/bilgiler/urunler");
        foreach(XmlNode nod in xmllist)
        {
            foreach(XmlNode childNode in nod.ChildNodes)
            {
                // her ürünün childnode oldu

                    if(childNode.Name == "#text")
                    {
                    } else
                    {
                    var urun_resim = childNode.SelectSingleNode("//resimDosyasi").InnerText;
                    var urun_aciklama = childNode.SelectSingleNode("//aciklama").InnerText;
                    var urun_birim = childNode.SelectSingleNode("//birim").InnerText;
                    MessageBox.Show(urun_birim);
                    var urun_miktar = childNode.SelectSingleNode("//miktar").InnerText;
                    var urun_toplam = childNode.SelectSingleNode("//toplam").InnerText;
                    var urun = new Urun(urun_resim, urun_birim, urun_miktar, urun_aciklama);
                    lw_urunler.Items.Add(urun);

                    }
            }
        }
Run Code Online (Sandbox Code Playgroud)

问题是当我在 foreach 循环中给 //birim 发送消息框时,它总是写入第一个 - 3,00((3 次)。正如您在 XML 中看到的那样,第一个是 3,00,第二个是 5,00第三个是 2,00 但它总是写第一个。我查了很多,但我看不出问题。

ror*_*.ap 5

尝试不带//,例如childNode.SelectSingleNode("birim")。两个正斜杠表示 XML 文档的根,我的猜测是birim每次总是找到从根开始的第一个节点。