如何解析XML文件
如何解析XML文件
这个问题已经在此处有答案:
我有一个看起来像这样的XML文件:
http%3A%2F%2Fwww.jason.org%2F News http%3A%2F%2Fwww.jason.org%2FPublic%2FNews%2FNews.aspx register http%3A%2F%2Fwww.jason.org%2Fpublic%2Fregistration%2Fregistration.aspx Argonauts http%3A%2F%2Fwww.jason.org%2FPublic%2FArgonauts%2FArgonauts.aspx Curriculum http%3A%2F%2Fwww.jason.org%2FPublic%2FCurriculum%2FCurriculum.aspx Credits http%3A%2F%2Fwww.jason.org%2Fpublic%2FMisc%2FCredits.aspx National+Science+Education+Standards, National+Geographic+Society, Physical+Science, Professional+Development, Earth+Science
...我很困惑如何读取它。我只想将标题、描述和URL分别放入字符串中。类似于:
foreach line in lines string title = gettitle; string description = getdescription; string url = geturl;
...我阅读了很多教程,但它们似乎都不与我需要做的相关。有人可以帮我解答吗?
admin 更改状态以发布 2023年5月21日
为了扩展LINQ to XML建议,你可以使用一个选择语句来创建代表解析出来的链接的对象:
XDocument doc = XDocument.Load(filename); var links = from link in doc.Descendants("inside_link") select new { Description = (string)link.Element("description"), Url = HttpUtility.UrlDecode((string)link.Element("url")) }; foreach(var l in links) Console.WriteLine("{1}", l.Url, l.Description);
在这种情况下,links
将是一个包含匿名类型的序列,该类型具有Description
和Url
属性,并解码Url
。此foreach
将显示类似于以下内容:
News register ...
如果您正在使用.NET 3.5,我建议使用LINQ to XML...
XDocument doc = XDocument.Load(filename); XElement insideLinks = doc.Root.Element("result").Element("inside_links"); foreach (XElement insideLink in insideLinks.Elements()) { string description = (string)insideLink.Element("description"); string url = (string)insideLink.Element("url"); }
这还允许您使用内置的“查询”语法,这样您可以做如下的操作...
XDocument doc = XDocument.Load(filename); XElement insideLinks = doc.Root.Element("result").Element("inside_links"); var allTitles = from XElement insideLink in insideLinks.Elements("inside_link") select (string)insideLink.Element("title");
(根据评论进行了编辑)