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

标签 c# .net 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>

还有读取 XML 文件的我的函数

        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);

                    }
            }
        }

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

最佳答案

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

关于C# XML 读取 foreach 总是第一个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50992348/

相关文章:

c# - 无法修改 'Selectable.Colors' 的返回值,因为它不是变量

c# - 停止 Visual Studio 将数据库 MDF 复制到 bin

c# - Visual Studio 图形调试器忽略工作像素着色器

c# - 从 .net Core 中的 webapi 调用 grpc 服务的策略

xml - 计算 XML 文档中特定节点的出现频率

c# - 从 JQuery 调用 WCF 服务不起作用

c# - 如何在 Repeater 中获取文字内容值

c# - Windows 窗体 StatusStrip 控件中的纯图像

.net - XmlDocument缓存内存使用

java - 使用 xml 配置的 spring bean 类中的 DAO null