我该如何解析这个xml?

时间:2011-05-05 10:08:21

标签: c# xml parsing

我需要使用system.xml解析c#中的以下xml代码。我需要一个包含标签User的内容的字符串列表。

<Configuration>
   ....
   <DebugUsersMail>
     <User>bob@example.com</User>
     <User>lenny@example.com</User>
   </DebugUsersMail>
   ...
</Configuration>

3 个答案:

答案 0 :(得分:2)

如果你能使用Linq这样的话很简单

    XDocument xmlDoc = XDocument.Load("C:\\your_xml_file.xml");
    List<string> users = xmlDoc.Descendants("User").Select(xElem => (string)xElem).ToList();

您需要在using语句中包含对System.Xml.Linq的引用才能使用XDocument对象。

但是,假设xml文件中没有其他用户元素,您不希望包含在列表中。

如果你想更具体一点,你可以这样做

List<string> users = xmlDoc.Descendants("DebugUsersMail")
                           .Descendants("User").Select(xElem => (string)xElem).ToList();

答案 1 :(得分:1)

我找到了解决方案:

List<string> returnList = new List<string>();
XmlNodeList node = xmlDocument.GetElementsByTagName("DebugUsersMail");
XmlNodeList childNodes = node[0].ChildNodes;
for(int i = 0; i < childNodes.Count; i++)
{
   returnList.Add(childNodes[i].InnerText);
}
return returnList;

答案 2 :(得分:0)

在C#中有很多方法可以做到这一点。您可以使用:

  • XmlDocument,然后是XPath和XQuery
  • XDocument和Linq
  • 的XmlTextReader / SAX
  • 正则表达式
  • 将XML反序列化为对象

要采取的路线取决于XML的其余部分。