Почему мой XmlReader.GetAttribute () не возвращает значение? - PullRequest
3 голосов
/ 28 февраля 2010

Я пытаюсь проанализировать мой XML в C #.

Вот часть файла, которая имеет отношение к делу:

<holder name="wnd_login" width="300" x="20" height="180">...</holder>

Вот код, который должен прочитать его:

while (reader.Read())
{
    if (reader.IsStartElement())
    {
        switch (reader.Name)
        {
            case "holder":
                Holder holder = new Holder(reader.GetAttribute("name"));
                ...
        }
    }
}

Я прочитал эту распространенную ошибкудолжен был забыть проверку, чтобы видеть, был ли элемент начальным элементом.Я добавил его, но GetAttribute по-прежнему возвращает ноль.Есть идеи?

1 Ответ

0 голосов
/ 28 февраля 2010

Возможно, вам нужно сначала получить XmlNodes с использованием нотации XPath, а затем выполнить итерацию по XmlNodes следующим образом:

foreach(XmlNode node in XmlNodes){
     if (node["holder"].HasAttribues != null && node["holder"].Attributes.Count >1){
        for (int i = 0; i < node["holder"].Attributes.Count; i++){
             try{
                XmlAttribute attr = node["holder"].Attributes[i];
                if (attr != null){
                     ....
                }
             }catch(XmlException xmlEx){
                // Do something here with this...output to log?
             }
        }
     }
}

Надеюсь, это поможет, С наилучшими пожеланиями, Том.

...