c# XML到列表框帮助

本文关键字:帮助 列表 XML | 更新日期: 2023-09-27 18:08:56

我有从rest服务WCF返回的XML。下面是XML

的一个示例
<string xmlns="http://schemas.microsoft.com/2003/10/Serialization/">
<catalog version="1.1"><dataset id="354" name="Mariano - Ship Drift" description="Global Currents, Static" datatype="currents" rank="5" saropsrank="4" format="netcdf" starttime="1980-01-01T00:00:00" endtime="2019-01-01T00:00:00" extentleft="-180.0000" extentbottom="-90.0000" extentright="180.0000" extenttop="90.0000" source="STATIC" wmslayeridstr="MARIANO_currents" confidence="L" directionfrom="no" image="ne_ndbc.jpg" />
</catalog>
</string>

我需要从id,名称,描述等中获取值…然后把它放到列表或列表框中。

WebResponse response = restWebRequest.GetResponse();
Stream responseStream = response.GetResponseStream();

响应流是保存XML的流。

任何想法?

c# XML到列表框帮助

XDocument doc = XDocument.Load(responseStream);
var elem = doc.Descendants().FirstOrDefault(el => el.Name.LocalName == "dataset");
if(elem != null)
{
    var attID = elem.Attribute("id");
    if(attID != null)
        Console.WriteLine(attID.Value);
}

你可以直接获得匿名类型的IEnumerable:

XDocument doc = XDocument.Parse(xml);
var values = doc.Descendants("dataset")
                .Select(el => new { id = el.Attribute("id").Value, 
                                    name = el.Attribute("name").Value 
                                  }
                 );

这是另一种方法:(我通过从文件加载XML来测试XML)

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Xml.Serialization;
using System.IO;
namespace delete4
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            Load();
        }
        void Load()
        {
            var stream = new FileStream("c:''pj''data.txt", FileMode.Open);
            XmlRootAttribute xRoot = new XmlRootAttribute();
            xRoot.ElementName = "string";
            xRoot.IsNullable = true;
            xRoot.Namespace = "http://schemas.microsoft.com/2003/10/Serialization/";
            XmlSerializer s = new XmlSerializer(typeof(sstring), xRoot);
            var o = s.Deserialize(stream) as sstring;  // o is your loaded object 
            stream.Close();
        }
        [ XmlRoot("string"), XmlType("string")]
        public class sstring
        {
            public Catalog catalog;
        }
        public class Catalog
        {     
            public Dataset dataset;
        }
        public class Dataset
        {
            [XmlAttribute("name")]
            public string Name;
            [XmlAttribute("id")]
            public string ID;
            [XmlAttribute("description")]
            public string Description;
        }
    }
}