要阵列的 XML 数据
本文关键字:数据 XML 阵列 | 更新日期: 2023-09-27 18:33:23
下面是我从URL获得的XML数据。当我查看源代码时,它是这样的:
<xml>
<beginning>
<id>information from rss provider here</id>
<updated>information from rss provider here</updated>
<link rel='alternate' type='text/html' href='tttt' title='alternate'/>
<link rel='self' type='application/atom+xml' href='tttt'/>
<someschemas>
<id>test</id>
<movieid>test</movieid>
<updated>teeeeest</updated>
<types scheme='vals' term='test'/>
<title type='html'>test</title>
<summary type='html'>test</summary>
<descriptions type='html'>test</descriptions>
<link rel='alternate' type='text/html' href='tttt' title='alternate'/>
<link rel='self' type='application/atom+xml' href='tttt'/>
<actor>
<name>teest</name>
<phone>test</phone>
</actor>
</someschemas>
<someschemas>
<id>test</id>
<movieid>test</movieid>
<updated>teeeeest</updated>
<types scheme='vals' term='test'/>
<title type='html'>test</title>
<summary type='html'>test</summary>
<descriptions type='html'>test</descriptions>
<link rel='alternate' type='text/html' href='tttt' title='alternate'/>
<link rel='self' type='application/atom+xml' href='tttt'/>
<actor>
<name>teest</name>
<phone>test</phone>
</actor>
</someschemas>
<someschemas>
<id>test</id>
<movieid>test</movieid>
<updated>teeeeest</updated>
<types scheme='vals' term='test'/>
<title type='html'>test</title>
<summary type='html'>test</summary>
<descriptions type='html'>test</descriptions>
<link rel='alternate' type='text/html' href='tttt' title='alternate'/>
<link rel='self' type='application/atom+xml' href='tttt'/>
<actor>
<name>teest</name>
<phone>test</phone>
</actor>
</someschemas>
</beginning>
</xml>
我能够阅读消息框中的内容:
WebRequest request = WebRequest.Create("http://www.test.com/file.xml");
WebResponse response = request.GetResponse();
Stream dataStream = response.GetResponseStream();
XElement xelement = XElement.Load(dataStream);
IEnumerable<XElement> employees = xelement.Elements();
foreach (var employee in employees)
{
if (employee.Elements("content") != null)
{
MessageBox.Show(employee.Value.ToString());
}
}
我想将其保存到数组、列表或 LINQ 中。
如何将上面的代码与上面的 XML 一起使用并使其成为数组。
我只想要<someschemas>.
中的所有数据,并且只希望这些值作为键/值对:
<title type='html'>test</title>
<summary type='html'>test</summary>
<descriptions type='html'>test</descriptions>
<actor>
<name>teest</name>
<phone>test</phone>
</actor>
下面是一个 LINQ to XML 版本:
string[] names = XElement.Load(dataStream).Descendants("Name")
.Select(element => element.Value).ToArray();
这将提供文档中的所有Name
元素。
为了完整起见,您需要创建自己的类来存储每个someschemas
对象。
class SomeSchemas
{
public string ID {get;set;}
public string MovieId {get;set;}
//add in others here
public string Actor_Name {get;set;}
public string Actor_Phone {get;set}
}
然后循环并添加您的项目
List<SomeSchemas> items = XElement.Load(dataStream)
.Descendants("someschemas")
.Select(x => new SomeSchemas()
{
ID = x.Element("id").Value,
MovieId = x.Element("movieid").Value,
//add in others here
Actor_Name = x.Element("actor").Element("name").Value,
Actor_Phone = x.Element("actor").Element("phone").Value
}.ToList();
如果Actors
可以有多个条目,则需要在 SomeSchemas
中创建一个List
对象。
然后,您可以在循环中使用items
,并对其执行 linq。它不会是键/值对(如dictionary
),但您可以根据其 ID 选择项目(如果它们是唯一的)。
SomeSchemas myObject = items.Single(x => x.ID == "asdf");