亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

C# XML 讀取 foreach 總是第一個值

C# XML 讀取 foreach 總是第一個值

C#
慕娘9325324 2021-08-29 17:42:31
我的 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 文件的 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);                    }            }        }問題是當我在 foreach 循環中向 //birim 發送消息框時,它總是寫入第一個 - 3,00((3 次)。正如您在 XML 中看到的,第一個是 3,00,第二個是 5,00第三個是 2,00 但它總是寫第一個。我查了很多,但我看不出問題。
查看完整描述

3 回答

?
炎炎設計

TA貢獻1808條經驗 獲得超4個贊

嘗試不帶//,例如childNode.SelectSingleNode("birim")。兩個正斜杠表示 XML 文檔的根,我的猜測是birim每次總是找到從根開始的第一個節點。


查看完整回答
反對 回復 2021-08-29
?
當年話下

TA貢獻1890條經驗 獲得超9個贊

使用 xml linq :


using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Xml;

using System.Xml.Linq;


namespace ConsoleApplication52

{

    class Program

    {

        const string FILENAME = @"c:\temp\test.xml";

        static void Main(string[] args)

        {

            XDocument doc = XDocument.Load(FILENAME);


            List<urun> uruns = doc.Descendants("urun").Select(x => new urun() {

                resimDosyasi = (string)x.Element("resimDosyasi"),

                aciklama = (string)x.Element("aciklama"),

                birim = (string)x.Element("birim"),

                miktar = (int)x.Element("miktar"),

                toplam = (string)x.Element("toplam")

            }).ToList();


        }

    }

    public class urun

    {

        public string resimDosyasi { get; set; }

        public string aciklama { get; set; }

        public string birim { get; set; }

        public int miktar { get; set; }

        public string toplam { get; set; }

    }

}


查看完整回答
反對 回復 2021-08-29
?
米脂

TA貢獻1836條經驗 獲得超3個贊

// 表示選擇節點,無論它們在當前上下文中的任何位置。當前上下文默認為根。要將結果限制為當前子節點下的結果,請遵循以下模式(只需添加一個點):

var urun_resim = childNode.SelectSingleNode(".//resimDosyasi").InnerText;


查看完整回答
反對 回復 2021-08-29
  • 3 回答
  • 0 關注
  • 550 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號