2014-06-30 28 views
0

我有一個XML文檔是如下如何從使用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> 

我想提取A00000002.png B00000002.png C00000002.png作爲使用的XDocument列表。我在一分鐘代碼:

var images = (from title in doc.Root.Elements("field").Where(node => node.Attribute("name").Value.Equals("Images")) select (string)title.Value); 

但它只返回互相...任何人身邊所有圖像名稱的字符串,知道我怎樣才能得到圖像名稱列表,除了沒有黑客的字符串?

回答

1

您可以使用下面menioned代碼

var node = doc.Descendants("field").Elements("field").Select(p=>p.Value); 

所以你會得到圖片名稱的列表。

O/P

enter image description here

,你可以使用它像

foreach (var item in node) 
     { 
      string value = item.ToString(); 
     } 
+0

是的,這現在包含字符串的「結果視圖列表'...任何想法如何我可以訪問它們? –

+0

我修改了我的答案 –

+0

它的工作原理!謝謝。 –

0

使用Split()函數來獲得字符串數組並將其轉換爲列表中,如果必要的:有關你的情況下,

string[] _arrImages = ((string)images).Split([separator]) 

,其中分離器是一個正確的分隔符字符,例如('')。 如果需要,可以通過應用_arrImages.ToList()函數將字符串數組_ arrImages轉換爲List<string>。 Rgds,

0

問題在於,您沒有枚舉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子元素。

0

嘗試添加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"); 
0

嘗試以下操作:

var mynode = doc.Descendants("field").Elements("field").Select(f=>f.Value); 
相關問題