繁体   English   中英

如何使用C#从xml文档中获取文本列表?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM