【问题标题】:How to use IN with xmlreader如何在 xmlreader 中使用 IN
【发布时间】:2011-12-19 20:38:12
【问题描述】:

如何使用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&lt;string&gt; names = new new List&lt;string&gt;();

我只想获取上一个列表中name 的节点。怎么做?

【问题讨论】:

    标签: c# asp.net xml linq xmlreader


    【解决方案1】:

    你的意思是,元素的本地名称不是必需的“天”,而是在列表中?

    if(xrdr.NodeType == XmlNodeType.Element && names.Contains(xrdr.LocalName))
    

    在 cmets 上编辑以下内容:

    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);
      }
    

    【讨论】:

    • 不,我的意思是xrdr.GetAttribute("name") 在给定列表中的值
    • DayNode构造函数是如何知道哪个字符串是哪个?
    • 嗯,我不知道,我问是否有某种方法可以获取特定列表中的值的节点。
    • 这意味着,我将获取所有节点,然后过滤结果?
    • 添加了一些返回名称和值的元组的内容,尽管它可能不如您在原始问题中的有用!
    猜你喜欢
    • 2010-12-22
    • 2012-08-05
    • 2010-10-28
    • 2014-03-20
    • 1970-01-01
    • 2010-11-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多