如何使用IN(,,,)
和xmlreader
来获取特定节点。
private static IEnumerable<DayNode> ReadDayNodes(string filePath)
{
using (FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.Read))
using (XmlReader xrdr = new XmlTextReader(fs))
while (xrdr.Read())
if (xrdr.NodeType == XmlNodeType.Element && xrdr.LocalName == "day")
yield return new DayNode(xrdr.GetAttribute("name"), xrdr.GetAttribute("short"), xrdr.GetAttribute("day"));
}
如果我有字符串列表。 像这样:
List<string> names = new new List<string>();
我想只获取前一个列表中name
的节点。怎么样?
答案 0 :(得分:2)
你的意思是,元素的本地名称不是“日”所必需的,而是在列表中?
if(xrdr.NodeType == XmlNodeType.Element && names.Contains(xrdr.LocalName))
编辑以下评论:
if (xrdr.NodeType == XmlNodeType.Element && xrdr.LocalName == "day")
foreach(string localName in names)
{
string attVal = xrdr.GetAttribute(localName);
if(attVal != null)
//we could just yield return attVal, but presuming we want to know which attribute it was on:
yield return Tuple.Create(localName, attVal);
}