如何解析这个XML?
我需要在c#中使用system.xml解析下面的xml代码。我需要一个包含标签User内容的字符串列表。如何解析这个XML?
<Configuration>
....
<DebugUsersMail>
<User>[email protected]</User>
<User>[email protected]</User>
</DebugUsersMail>
...
</Configuration>
我找到了一个解决方案:
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;
有很多方法可以在C#中完成。您可以使用:
- 的XmlDocument andthen XPath和XQuery
- 的XDocument和LINQ
- 的XmlTextReader/SAX
- 正则表达式
- Deserialise的XML对象
路线采取取决于XML的其他部分。
如果你可以使用LINQ这样的事情是好的,简单
XDocument xmlDoc = XDocument.Load("C:\\your_xml_file.xml");
List<string> users = xmlDoc.Descendants("User").Select(xElem => (string)xElem).ToList();
你需要在你的using语句使用XDocument对象以System.Xml.Linq的一个参考。
但是,这确实假定xml文件中没有其他用户元素不包含在列表中。
如果您想更具体的你可以这样做
List<string> users = xmlDoc.Descendants("DebugUsersMail")
.Descendants("User").Select(xElem => (string)xElem).ToList();
当我编辑此代码时,我收到以下错误消息:System.Collections.Generic.IEnumerable
看起来你没有在你的使用语句中引用Linq。尝试使用System.Linq添加;到你的使用。它应该在3.5上正常工作,就像我为它编写的那样 – Gavin 2011-05-05 11:39:28
你已经错过了示例XML – 2011-05-05 10:10:08
哪里是XML? – YesMan85 2011-05-05 10:10:18
对不起。它现在在那里。 – Luke 2011-05-05 10:11:16