2009-01-06 25 views
5

Öznitelik adlarını bilmeyeceğim dinamik xml alıyorum, xml ve kodlara bakarsanız ... Basit bir örnek oluşturmaya çalıştım. "myName", "myNextAttribute" ve "blah" gibi öznitelik değerlerini alabilir, ancak "name", "nextAttribute" ve "etc1" gibi öznitelik adlarını alamıyorum. Herhangi bir fikir, anladığım kadarıyla kolay bir şey olmalı diye düşünüyorum ... ama eminim eksik. Sen MSDN görebileceğinizöznitelik değerine ek olarak öznitelik değerine ek olarak xml

static void Main(string[] args) 
    { 
     string xml = "<test name=\"myName\" nextAttribute=\"myNextAttribute\" etc1=\"blah\"/>"; 

     TextReader sr = new StringReader(xml); 

     using (XmlReader xr = XmlReader.Create(sr)) 
     { 
      while (xr.Read()) 
      { 
       switch (xr.NodeType) 
       { 
        case XmlNodeType.Element: 
         if (xr.HasAttributes) 
         { 
          for (int i = 0; i < xr.AttributeCount; i++) 
          { 
           System.Windows.Forms.MessageBox.Show(xr.GetAttribute(i)); 
          } 
         } 
         break; 
        default: 
         break; 
       } 
      } 
     } 
    } 

cevap

23

:

if (reader.HasAttributes) { 
    Console.WriteLine("Attributes of <" + reader.Name + ">"); 
    while (reader.MoveToNextAttribute()) { 
    Console.WriteLine(" {0}={1}", reader.Name, reader.Value); 
    } 
    // Move the reader back to the element node. 
    reader.MoveToElement(); 
} 
+0

Teşekkürler, bunun yakın bir şey olması gerektiğini düşündüm ... ayrıca orijinalimdeki döngüyü bulduğumda, xr.MoveToAttribute (i) 'yi de yapabilirdim ve aynı etkiyi yakalayabilirdim. –

0

yalnızca tek bir durum var yerine eğer deyimi içine haline getirmeyi deneyin ettiğimden beri anahtarı gereksizdir. xr.NoteType yanlış ise, bağımsız değişkenler kalan göz ardı edilir ve eğer blok atlanır böylece & & operatörü için değerlendirir

if (xr.NodeType && xr.HasAttributes) 
{ 
    ... 
} 

not edin.

+0

Bu örnekte evet, 'gerçek dünya' senaryosunda daha fazla vakam var, sadece temiz tutmaya çalıştım. Yine de teşekkürler. –

İlgili konular