我有以下XML文件:
<Categories>
<Category name="TopDown">
<Path>http://localhost:8080/images/TopDown/Divx.png</Path>
<Path>http://localhost:8080/images/TopDown/Blu-Ray.png</Path>
<Path>http://localhost:8080/images/TopDown/Divx.png</Path>
<Path>http://localhost:8080/images/TopDown/Divx.png</Path>
<Path>http://localhost:8080/images/TopDown/Divx.png</Path>
<Path>http://localhost:8080/images/TopDown/Divx.png</Path>
</Category>
<Category name="SideScroll">
<Path>http://localhost:8080/images/SideScroll/MediaMonkey.png</Path>
<Path>http://localhost:8080/images/SideScroll/Miro.png</Path>
<Path>http://localhost:8080/images/SideScroll/QuickTime.png</Path>
<Path>http://localhost:8080/images/SideScroll/VLC.png</Path>
<Path>http://localhost:8080/images/SideScroll/WinAmp.png</Path>
</Category>
在我的c#代码中,有一个函数可以获取代表Category "name“属性的字符串,如果该字符串等于该属性,我希望获取"Path”标记之间的所有文本。例如,如果函数获取一个等于"TopDown“的字符串参数,则输出将为:
http://localhost:8080/images/TopDown/Divx.png
http://localhost:8080/images/TopDown/Blu-Ray.png
http://localhost:8080/images/TopDown/Divx.png
http://localhost:8080/images/TopDown/Divx.png
http://localhost:8080/images/TopDown/Divx.png
http://localhost:8080/images/TopDown/Divx.png谢谢。
发布于 2012-07-13 08:04:09
您可以使用LINQ To XML来完成此操作:
var xdoc = @"<Categories>
<Category name='TopDown'>
<Path>http://localhost:8080/images/TopDown/Divx.png</Path>
<Path>http://localhost:8080/images/TopDown/Blu-Ray.png</Path>
<Path>http://localhost:8080/images/TopDown/Divx.png</Path>
<Path>http://localhost:8080/images/TopDown/Divx.png</Path>
<Path>http://localhost:8080/images/TopDown/Divx.png</Path>
<Path>http://localhost:8080/images/TopDown/Divx.png</Path>
</Category>
<Category name='SideScroll'>
<Path>http://localhost:8080/images/SideScroll/MediaMonkey.png</Path>
<Path>http://localhost:8080/images/SideScroll/Miro.png</Path>
<Path>http://localhost:8080/images/SideScroll/QuickTime.png</Path>
<Path>http://localhost:8080/images/SideScroll/VLC.png</Path>
<Path>http://localhost:8080/images/SideScroll/WinAmp.png</Path>
</Category>
</Categories>";
var paths = XDocument.Parse(xdoc).Descendants("Category")
.Where(w => (string)w.Attribute("name") == "TopDown")
.Select(s => s.Elements("Path").Select (x => (string)x)).ToList();
foreach (var x in paths)
Console.WriteLine(x);您可以将其复制粘贴到linqpad或visual studio中,然后它就会运行。
https://stackoverflow.com/questions/11462307
复制相似问题