2016-06-09 97 views
-2

我有一個XML這個樣子的把XML子節點值

<customlocation> 
    <path>xxxxx</path> 
    <filetype>xxxxx</filetype> 
    <filetype>xxxxx</filetype> 
    <filetype>xxxxx</filetype> 
       . 
       . 
       . 
    <filename>xxxxx</filename> 
    <filename>xxxxx</filename> 
    <filename>xxxxx</filename> 
       . 
       . 
       . 
    <delete>xxxxx</delete> 
</customlocation> 
<customlocation> 
    <path>xxxxx</path> 
    <filetype>xxxxx</filetype> 
    <filetype>xxxxx</filetype> 
    <filetype>xxxxx</filetype> 
       . 
       . 
       . 
    <filename>xxxxx</filename> 
    <filename>xxxxx</filename> 
    <filename>xxxxx</filename> 
       . 
       . 
       . 
    <delete>xxxxx</delete> 
</customlocation> 
       . 
       . 

,只要你想,你-dynamic-可以有很多customlocation標籤,我可以很容易地得到這些標籤是這樣的:

  XElement doc = XElement.Load(xmlFilePath); 
      foreach(XElement elm in doc.Descendants().Elements("customlocation")) 
     { 

但問題是如何在這裏面搜索文件類型和文件名的標籤我搜索了這長時間,但沒有運氣到現在,請幫助 感謝alraedy

+0

你要搜索什麼檢查?什麼是投入和預期產出? –

+0

即時搜索文件類型和文件名標籤來獲取它們的值並將其存儲在數組中注意:你不能看到它,因爲我只是發現把它們放在標籤中使它們不可見 –

+0

@HariPrasad我不能只使用字符串sss = 。elm.Element( 「文件類型」)值;必須迭代取決於我們有多少個標記 感謝您的評論 –

回答

0

Elements發現只有那些直接後代的元素,Descendants發現在任何級別的兒童(即兒童,盛大子女)

由於要構造的filetpefilename一個數組,你可以做到這一點。

XDocument doc = XDocument.Load(filepath); 
var filetypes = doc.Descendants("filetype").Select(x=>x.Value).ToArray(); 
var filenames = doc.Descendants("filename").Select(x=>x.Value).ToArray(); 

Demo

+0

實際上工作,但這將返回數組中的所有文件類型值我應該能夠區分每個customlocation標記的文件類型值有沒有辦法做到這一點? 謝謝 –

+0

這是可能的,但你想用哪個屬性來區分customlocation? –

+0

我可以添加像這樣的屬性 會幫助嗎? –

0

Tr的Y本

List<string> Values = new List<string>();  
XDocument doc = XDocument.Load(Server.MapPath("Server.xml")); 
foreach(XElement elm in doc.Descendants().Elements("customlocation")) 
{ 
    foreach (XElement ele in elm.Elements("filetype")) 
    { 
    Values.Add(ele.Value); 
    } 
}