在xml文件中查找项
本文关键字:查找 文件 xml | 更新日期: 2023-09-27 18:29:29
我有一个类似的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>
我怎样才能找到特殊的月和日活动?例如,当月是1,天是2 时,我想得到"样本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到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'是字符串)