找到xml文件

问题描述:

一个项目,我有像下面找到xml文件

<root> 
<Month name="Jan" index="1"> 
     <Day index="2"> 
     <event> sample 1</event> 
     </Day> 
     <Day index="3"> 
     <event> sample 2 </event> 
     </Day> 
    </Month> 

<Month name="Feb" index="2"> 
     <Day index="5"> 
     <event> sample 3 </event> 
     </Day> 
     <Day index="2"> 
     <event> sample 4 </event> 
     </Day> 
    </Month> 
</root> 

我怎么能找到特殊的月份和日期事件xml文件? 例如我想获得“样品2”的时候一个月就是1天2

XmlDocument doc = new XmlDocument(); 
doc.Load("EventsXML.xml"); 
XmlNode even= doc.SelectSingleNode("/root/Month[@index='1'] |/root/Month/day[@index='2']"); 
string str=even.InnerXml.ToString(); 
+1

使用LINQ XML和的XDocument。 – 2012-03-28 14:06:07

您需要修改您的XPath来是这样的:

XmlNode even= doc.SelectSingleNode("/root/Month[@index='1']/Day[@index='2']/event"); 

您还可以使用innerText属性,而不是InnerXml正如你所知道的内容是文本,可以修改XPath来考虑到这一点:

XmlNode even = doc.SelectSingleNode("/root/Month[@index='1']/Day[@index='2']/event/text()"); 
string str = even.Value; 

一个XDocument(LINQ -to-XML)的答案:

var doc = XDocument.Load(...); 
var day = doc.Root 
    .Descendants("Month") 
    .Where(e => e.Attributes("index").Value == m) 
    .Descendants("Day") 
    .Where(e => e.Attributes("index").Value == d); 

( 'm' 和 'd' 作为字符串为简单起见)

+0

+1甜蜜的解决方案 – GETah 2012-03-28 14:16:16