阅读Xml [英] Read Xml

查看:86
本文介绍了阅读Xml的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

下面是要播放的示例代码

below is the sample code to play with

<?xml version="1.0" encoding="UTF-8"?>
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="qualified">
    <xs:element name="UsersList">
    <xs:complexType>   
      <xs:sequence>   
        <xs:element ref="User" maxOccurs="unbounded"/>
        </xs:sequence>
    </xs:complexType>
  </xs:element>
         
      <xs:element name="User">
        <xs:complexType>
          <xs:sequence>
            <xs:element ref="Name" />
            <xs:element ref="BirthTime" />
            </xs:sequence>
    </xs:complexType>
      </xs:element>
      
  
      <xs:element name = "Name">
       <xs:simpleType>
          <xs:restriction base = "xs:string">
             <xs:pattern value="[a-zA-Z0-9]*"/>
          </xs:restriction>
       </xs:simpleType>
    </xs:element>
 
      <xs:element name="BirthTime">
        <xs:simpleType>
          <xs:restriction base="xs:string">
            <xs:pattern value="(0[0-9]|[1][0-9]|2[0-3]):[0-5][0-9]"/>
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
       
    </xs:schema>

xml:

<?xml version="1.0" encoding="utf-8"?>
<UsersList>
  <User>
    <Name>sam</Name>
    <BirthTime>20:11</BirthTime>
  </User>
  <User>
    <Name>wit</Name>
    <BirthTime>10:11</BirthTime>
  </User>
</UsersList>

class:

namespace Test
{
    using System;
    using System.Diagnostics;
    using System.Xml.Serialization;
    using System.Collections;
    using System.Xml.Schema;
    using System.ComponentModel;
    using System.Collections.Generic;
 
 
    public partial class UsersList
    {
 
        private List<User> userField;
 
        public UsersList()
        {
            this.userField = new List<User>();
        }
 
        public List<User> User
        {
            get
            {
                return this.userField;
            }
            set
            {
                this.userField = value;
            }
        }
    }
 
    public partial class User
    {
 
        private string nameField;
 
        private string birthTimeField;
 
        public string Name
        {
            get
            {
                return this.nameField;
            }
            set
            {
                this.nameField = value;
            }
        }
 
        public string BirthTime
        {
            get
            {
                return this.birthTimeField;
            }
            set
            {
                this.birthTimeField = value;
            }
        }
    }
}

尝试将xml加载到列表< user>如下所示

tried to load the xml into list<user> as below

XElement xelement = XElement.Load(@"D:\XmlTesting\user.xml");
 
          IEnumerable<XElement> lstuser = xelement.Elements();

但结果不算什么。任何建议如何解决此问题

but result is nothing. any suggestion how to resolve this issue

loving dotnet

loving dotnet

推荐答案

lstuser应包含两个XElements。您可以通过调用IEnumerable上的ToList()来实现这些项目:

lstuser should contain two XElements. You could realize the items by calling ToList() on the IEnumerable:

List<XElement> lstuser = xelement.Elements().ToList();
int count = lstuser.Count; // = 2

如果你想要一个List< User>您可以使用LINQ Select方法为每个返回的XElement创建一个新的User对象:

If you want a List<User> you could use the LINQ Select method to create a new User object for each returned XElement:

List<User> lstuser = xelement.Elements().Select(element => new User()
            {
                Name = element.Element("Name").Value,
                BirthTime = element.Element("BirthTime").Value,
            }).ToList();

或者如果你想要一个UserList:

Or if you want a UserList:

            UsersList userList = new UsersList()
            {
                User = xelement.Elements().Select(element => new User()
                {
                    Name = element.Element("Name").Value,
                    BirthTime = element.Element("BirthTime").Value,
                }).ToList()
            };

希望有所帮助。

请记得关闭你的主题将有用的帖子标记为答案,然后在遇到新问题时启动新帖子。请不要在同一个帖子中提出几个问题。

Please remember to close your threads by marking helpful posts as answer and then start a new thread if you have a new question. Please don't ask several questions in the same thread.


这篇关于阅读Xml的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆