![](/img/trans.png)
[英]How to get list of specific XML elements from XML document using C# ASP.Net?
[英]How can I get a list of text from an xml document using c#?
我有一个XML文档,如下
<meta>
<field type="xs-string" name="Category">جداول</field>
<field type="struct" name="Images">
<field type="xs-string" name="FileName">A00000002.png</field>
<field type="xs-string" name="FileName">B00000002.png</field>
<field type="xs-string" name="FileName">C00000002.png</field>
</field>
</meta>
我想使用XDocument将A00000002.png B00000002.png C00000002.png提取为列表。 目前我的代码是:
var images = (from title in doc.Root.Elements("field").Where(node => node.Attribute("name").Value.Equals("Images")) select (string)title.Value);
但是,它只会返回一个字符串,其中所有图像名称都彼此相邻...任何人都知道我如何获得图像名称列表,而又不会弄乱字符串?
您可以使用下面提到的代码
var node = doc.Descendants("field").Elements("field").Select(p=>p.Value);
这样您将获得图像列表名称。
O / P
你可以像这样使用它
foreach (var item in node)
{
string value = item.ToString();
}
使用Split()
函数获取字符串数组,并在必要时将其转换为List:与您的情况有关,
string[] _arrImages = ((string)images).Split([separator])
其中,分隔符是适当的定界符char,例如('')。 如有必要,可以通过应用_arrImages.ToList()
函数将字符串数组_ arrImages
转换为List<string>
。 RGDS,
问题在于您没有枚举Images
,而是返回了它的内容,这就是您显示的字符串。
试试这个:
var images = from title in doc.Root.Elements("field").Where(node => node.Attribute("name").Value.Equals("Images")).Descendants().Where( node => node.Attribute("name").Value.Equals("FileName")) select (string)title.Value;
它在第二个Where
遍历子元素。
尝试将Regex.Split
添加到您的查询结果中:
XElement rootElement = XDocument.Load(@"YourPath").Root;
var images = (from title in rootElement.Elements()
.Where(node => node.Attribute("name").Value.Equals("Images"))select (string)title.Value);
string[] GroupsItems = Regex.Split((string)images, "png");
请尝试以下操作:
var mynode = doc.Descendants("field").Elements("field").Select(f=>f.Value);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.