2011-12-19 9 views
0

IN(,,,)xmlreaderを使用して特定のノードを取得する方法。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>();

と私はそれに.How前のリストでnameノードのみを取得するためにしたいですか?

答えて

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

はありません、私は意味与えられたリスト –

+1

で 'xrdr.GetAttribute(「名前」)'値がどのようにしている文字列を知るためにDayNodeコンストラクタがあります? –

+0

hmmm、わかりませんが、値が特定のリストにあるノードを取得する方法があるかどうか尋ねます。 –

関連する問題