列表:
List<string> list = new List<string>();
XML文件:
<memberlist>
<member>
<name>Name</name>
<status>Status</status>
</member>
</memberlist>
我如何解析这个文件,让(file.xml)进入列表?
我尝试了很多方法,但似乎都没有。
我想查看状态是否为'gold',如果是,我想将该成员的名字放入列表中。
答案 0 :(得分:0)
您应该使用System.Xml.Linq;
using (FileStream fileStramWrite = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.Read))
using (StreamReader streamReader = new StreamReader(fileStramWrite))
{
var xdoc = XDocument.Load(streamReader);
var xElement = xdoc.Element("memberlist");
var xElement2 = xElement.Element("member");
var name = xElement2.Element("name").Value;
var status = xElement2.Element("status").Value;
}
答案 1 :(得分:0)
将xml加载到XDocument
。您可以从文件中执行此操作,我已经从字符串中进行了演示。
对名为&#34; status&#34;的元素执行linq查询(在&#34;会员&#34;内),其价值也为&#34; gold&#34;。
其中,抓住&#34; name&#34;的价值。元件。
在字符串列表中使用AddRange
。
List<string> lstGolds = new List<string>();
string xml ="<memberlist><member><name>Name</name><status>gold</status></member></memberlist>";
XDocument doc = XDocument.Parse(xml);
var goldStatus = doc.Descendants("member")
.Where(d => d.Element("status").Value == "gold")
.Select(d => d.Element("name").Value);
lstGolds.AddRange(goldStatus);
答案 2 :(得分:0)
您可以使用LINQ
XElement xml = XElement.Load("locationToYourXmlFile");
var members = xml.Elements("member");
var list = members.Where(member => member.Element("status")?.Value == "Gold")
.Select(member => member.Element("name")?.Value)
.ToList();
假设您的XML在根memberlist
元素下有一堆成员元素,每个元素都包含name
和status
元素。
<?xml version="1.0" encoding="utf-8"?>
<memberlist>
<member>
<name>John</name>
<status>Gold</status>
</member>
<member>
<name>Sam</name>
<status>Silver</status>
</member>
<member>
<name>Sara</name>
<status>Gold</status>
</member>
</memberlist>
答案 3 :(得分:0)
将您的XML转换为对象列表....
使用这两个方法:
public static string Serialize<T>(T dataToSerialize)
{
try
{
var stringwriter = new ISOEncodingStringWriter();
var serializer = new XmlSerializer(typeof(T));
var xns = new XmlSerializerNamespaces();
xns.Add(string.Empty, string.Empty);
serializer.Serialize(stringwriter, dataToSerialize, xns);
return stringwriter.ToString();
}
catch
{
throw;
}
}
public static T Deserialize<T>(string xmlText)
{
try
{
var stringReader = new System.IO.StringReader(xmlText);
var serializer = new XmlSerializer(typeof(T));
return (T)serializer.Deserialize(stringReader);
}
catch
{
throw;
}
}
在您提供以下属性的位置创建以下类
[XmlRoot(ElementName = "Members", Namespace = "")]
public class Members
{
[XmlElement("Member")]
public Member[] member { get; set; }
}
public class Member
{
[XmlElementAttribute("Name")]
public string Name { get; set; }
[XmlElementAttribute("Status")]
public string Status { get; set; }
}
然后反序列化您的数据。
Members result = Deserialize<Members>(XML_String);
你有一个数组中的成员,如果你愿意,你可以将其转换为一个列表。