阅读Xml [英] Read 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屋!