我想要做的就是: 我可以同时读取xml元素的值和属性。 我的英文不是很好。对不起。
<all>
<hp id="1" t="K" k="1">DÖNEN VARLIKLAR</hp>
<hp id="10" t="K" k="10">HAZIR DEĞERLER</hp>
<hp id="100" t="K" k="100">KASA</hp>
<hp id="1" t="B" k="100.02">ŞUBE KASASI</hp>
<hp id="5417" t="B" k="100.Y0001">Yeni Hesap Adı</hp>
</all>
这是我的xml文件。 我想读取hp元素的值和k属性,我想把我在行中读取的值放在datagridview中的列下。这是我的c#代码:
dataGridView2.ColumnCount = 2;
dataGridView2.Columns[0].Name = "Hesap Kodu";
dataGridView2.Columns[1].Name = "Hesap Adı";
XDocument xDoc = XDocument.Load(@"C:\Luca_Offline_Yerel\hp461979110642727.xml");
XElement rootElement = xDoc.Root;
XmlDocument i = new XmlDocument();
i.Load(@"C:\Luca_Offline_Yerel\hp461979110642727.xml");
XmlNodeList xnList = i.SelectNodes("/all / hp");
DataSet ds = new DataSet();
//xml dosyamızı okumak için bir reader oluşturuyoruz.
XmlReader xmlFile;
xmlFile = XmlReader.Create(@"C:\Luca_Offline_Yerel\hp461979110642727.xml", new XmlReaderSettings());
//içeriği Dataset e aktarıyoruz.
ds.ReadXml(xmlFile);
//datagridviewin kaynağı olarak dataseti gösteriyoruz.
String Kod, Ad;
foreach (XElement rehberimiz in rootElement.Elements())
{
//yapmam gereken ad'a hp nin element içeriğini ekleme!
Kod = rehberimiz.Attribute("k").Value;
Ad = rehberimiz.Element("hp_Text").Value;
dataGridView2.Rows.Add(Kod, Ad);
}
但我在这一行上收到错误:
Ad = rehberimiz.Element("hp_Text").Value;
答案 0 :(得分:0)
您应该使用FirstNode.ToString()
代替Element("hp_Text").Value
:
String Kod, Ad;
foreach (XElement rehberimiz in rootElement.Elements())
{
//yapmam gereken ad'a hp nin element içeriğini ekleme!
Kod = rehberimiz.Attribute("k").Value;
Ad = rehberimiz.FirstNode.ToString();
dataGridView2.Rows.Add(Kod, Ad);
}
答案 1 :(得分:0)
这样做:
XmlDocument xmlDocument = new XmlDocument();
xmlDocument.Load("XMLFile1.xml");
XmlNode oRootNode = xmlDocument.SelectSingleNode("/all");
foreach (XmlNode item in oRootNode.ChildNodes)
{
var Kod = item?.Attributes["k"]?.InnerText;
var Ad = item?.InnerText;
Console.WriteLine(Kod + " " + Ad);
}
将Kod和广告添加到行。这将解决您的问题。