2012-07-26 84 views
1

我有XML如下:的XDocument,让每一个元素(S)值

<Reports> 
    <report> 
    <name>By Book</name> 
    <report_type>book</report_type> 
    <Object>Count Change</Object> 
    <Slicers detail="detail"> 
     <Namespace>EOD</Namespace> 
     <BookNode>HighLevel</BookNode> 
     <DateFrom>T-2</DateFrom> 
     <DateTo>T-1</DateTo> 
     <System>NewSystem</System> 
    </Slicers> 
    </report> 
</Reports> 

我只是想遍历的XDocument的每个元素的值(PREF是切片机的任何元素),但从所有元素开始。

当我运行以下:

 var slicers = from c in config.Elements("Reports") 
         select c.Value ; 

     foreach (var xe in slicers) 
     { 
      Console.WriteLine(xe); 
     } 

输出是单线连接所有的值加在一起。

“通过BookbookCount ChangeEODHighLevelT-2T-1NewSystem”

我通过他们一个要循环的时间,“由书”第一,运行一些代码,然后预定等等等等

我相信这很简单,但无法绕过它。我曾尝试foreach(查询中的Xelement),但相同的resulst

+0

这是因为您只是在打印根节点(即其中的所有内容)的值。尝试通过下降 – Woody 2012-07-26 11:01:26

+0

你能举个例子吗?我尝试了以下结果:var configrs = from config.Descendants(“Reports”) select c.Value;'' – user1156000 2012-07-26 12:03:03

回答

-1

我会做这样的事情;

XmlDocument doc = new XmlDocument(); 
doc.LoadXml(xml); 
//load in your xml here 
XmlNodeList xnList = doc.SelectNodes("nodeYou'reLookingFor"); 
//for getting just the splicers you could do "Reports/report/Slicers" 

foreach (XmlNode node in xnList) 
    string namespace = node["Namespace"].InnerText; 
    //go through all your nodes here 

你创建一个xmlDoc中,加载你的XML到它,创造它持有该列表中的每个节点(在指定的XPath)的列表,然后通过每个循环。在循环中,您可以通过引用来执行任何您想要的操作

node["nodenamehere"].InnerText 
相关问题