2011-12-19 7 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>();

와 내가 이전 목록의 괜찮나에 name 것과 노드 만 얻을 싶어?

답변

2

요소의 로컬 이름이 "day"일 필요는 없지만 목록에있는 것은 의미합니까? 의견을 다음

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, 모르겠다. 특정 목록에 값이있는 노드를 얻는 방법이 있는지 물어 본다. –

관련 문제