找到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();
答
您需要修改您的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
使用LINQ XML和的XDocument。 – 2012-03-28 14:06:07