正在从XML读取值

本文关键字:读取 XML | 更新日期: 2023-09-27 17:57:41

XML数据:

<LIST>
  <TITLE>Item</TITLE>
  <YEAR>2013</YEAR>
  <NAME>
    <NAME_ n="1">AB</NAME_>
    <NAME_ n="2">CD</NAME_>
    <NAME_ n="3">EF</NAME_>
    <NAME_ n="4">GH</NAME_>
    <NAME_ n="5">IJ</NAME_>
  </NAME>
  <PRICE>
    <PRICE_ n="1">100</PRICE_>
    <PRICE_ n="2">103</PRICE_>
  </PRICE>
  <AV>
    <AV_ n="0">128,457</AV_>
    <AV_ n="1">1,746,301</AV_>
    <AV_ n="2">173,247</AV_>
    <AV_ n="3">246,102</AV_>
  </AV>
  <PIC>
    www.example.com/pictest.jpg
  </PIC>
  <URL>www.test.com/itemtest</URL>
</LIST>

我试过这个代码:

XmlTextReader reader = new XmlTextReader(a);
while (reader.Read())
{
    if (reader.Name == "AV")
    {
        label1.Text += reader.Value;
    }

现在,我知道我的代码需要更多的帮助,因为我无法获得任何输出
如何从该XML中读取值?

有人可以帮助我从这个XML中获取所有值吗?bcs我对xml非常陌生,需要开始工作的样本!:(

正在从XML读取值

要从AV_节点的内容中获取所有数值和属性编号,请使用下一个脚本:

string str = "..."; //xml contents go here
var xml = XDocument.Parse(str);
var values = xml.Descendants("AV_")
                .Select(n => n.Attribute("n").Value + " : " + n.Value);

values.ToList()
      .ForEach(Console.WriteLine);

打印:

0 : 128,457
1 : 1,746,301
2 : 173,247
3 : 246,102

不要忘记将对Linq的引用添加到XML命名空间using System.Xml.Linq

您正在查找父元素并获取它的文本值。它没有文本值,只有另一个子元素。

改为尝试

        XmlTextReader reader = new XmlTextReader(a);
        while (reader.Read())
        {
            if (reader.Name == "AV_")
            {
                label1.Text += reader.Value;
            }