XMLDocument углубляется - PullRequest
       15

XMLDocument углубляется

0 голосов
/ 06 октября 2011

Прямо сейчас мой код похож на этот (на самом деле на один уровень глубже). Если название компании совпадает с узлом компании, то создайте из него список узлов (так как мне нужно заполнить раскрывающийся список всеми деталями) --- Не используйте 3.5 для этого проекта: (

XmlNodeList elemList = xmlDoc.GetElementsByTagName("company");
foreach (XmlNode node in elemList)
{
    if (node.Attributes[0].Value == company)
    {   
        foreach (XmlNode child in node.ChildNodes)
        {
            foreach (XmlNode detail in child.ChildNodes)
            {
                ddlCodes.Items.Add(detail.Value.ToString());
            }
        }
    }
}

Не очень нравятся все эти foreach утверждения, просто интересно, есть ли более чистый способ. Вот как выглядит мой xml

<companies>
    <company id="company1">
       <code>12</code>
       <detail>detail of 12 code</detail>
    </company>
    <company id="company2">
       <code>15</code>
       <detail>detail of 15 code</detail>
    </company>
</companies>

Ответы [ 2 ]

2 голосов
/ 06 октября 2011

Посмотрите на XPath и класс XPathNavigator, он предоставляет вам язык запросов для XML

Или вы можете использовать Linq to XML, если хотите, но это зависит от .net frameworkвы используете.

0 голосов
/ 06 октября 2011

Как насчет этого?

[XmlRoot("companies")]
public class Root
{
    [XmlElement("company")]    
    public company[] companies;
}

public class company
{
    [XmlAttribute("id")]
    public string id;
    public string code;
    public string detail;
}


XmlSerializer xml = new XmlSerializer(typeof(Root));
Root r = (Root)xml.Deserialize(new StringReader(xmlstr));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...