把XML子节点值

问题描述:

我有一个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( “文件类型”)值;必须迭代取决于我们有多少个标记 感谢您的评论 –

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

我可以添加像这样的属性 会帮助吗? –

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); 
    } 
}