我对C#很新,我真的很难解决这个问题。
所以基本上我有一个像这样的XML文件:
<groups>
<group id="1" name="group1" location="null">
<member id="1" name="Jack" age="32"/>
<member id="2" name="Tom" age="25"/>
<member id="3" name="John" age="32"/>
</group>
<group id="2" name="group2" location="null">
<member id="1" name="Bob" age="31"/>
<member id="2" name="Michael" age="34"/>
<member id="3" name="Mike" age="44"/>
</group>
不完全是这样,但它遵循完全相同的格式。所以我想要做的是,将一个小组的所有成员加入其自己的列表。所以每个小组都有它自己的列表。所以Jack,Tom,John(组ID 1的成员)将在list1中,Bob,Michael和Mike(组ID 2的成员)将在list2中。我目前有这个,这基本上把所有成员,无论他们的群体,放在同一个列表中,这不是我想要的。解决方案可能非常简单,我只是没有使用XML文件的经验,所以不知道如何推进这个。
String XMLURL = "link_to_xml";
using (XmlTextReader reader = new XmlTextReader(XMLURL))
{
while (reader.Read())
{
switch (reader.NodeType)
{
case XmlNodeType.Element:
switch (reader.Name)
{
case "member":
if (reader.HasAttributes)
{
reader.MoveToAttribute(1);
players.Add(reader.Value.ToUpper());
}
break;
}
break;
}
}
}
}
答案 0 :(得分:0)
您可以像这样使用System.Xml.Linq:
private List<string[]> GetGroups(string xml)
{
List<string[]> result = new List<string[]>();
XDocument document = XDocument.Parse(xml);
XElement groups = document.Root;
foreach (XElement group in groups.Elements("group"))
{
result.Add(group.Elements("member").Select(item => item.Attribute("name").ToString()).ToArray());
}
return result;
}
我没有用测试文件运行它。我只是想让您了解如何使用System.Xml.Linq命名空间类。
答案 1 :(得分:0)
您可以使用XML Linq轻松完成。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Linq;
using System.Globalization;
namespace ConsoleApplication53
{
class Program
{
static void Main(string[] args)
{
string xml =
"<groups>" +
"<group id=\"1\" name=\"group1\" location=\"null\">" +
"<member id=\"1\" name=\"Jack\" age=\"32\"/>" +
"<member id=\"2\" name=\"Tom\" age=\"25\"/>" +
"<member id=\"3\" name=\"John\" age=\"32\"/>" +
"</group>" +
"<group id=\"2\" name=\"group2\" location=\"null\">" +
"<member id=\"1\" name=\"Bob\" age=\"31\"/>" +
"<member id=\"2\" name=\"Michael\" age=\"34\"/>" +
"<member id=\"3\" name=\"Mike\" age=\"44\"/>" +
"</group>" +
"</groups>";
XDocument doc = XDocument.Parse(xml);
var results = doc.Descendants("group").Select(x => new {
id = (int)x.Attribute("id"),
name = x.Attribute("name").Value,
location = x.Attribute("location").Value,
memebers = x.Elements("member").Select(y => new {
id = (int)y.Attribute("id"),
name = y.Attribute("name").Value,
age = (int)y.Attribute("age")
}).ToList()
}).ToList();
}
}
}