Максимальное количество атрибутов, которое имеет узел в документе XML - PullRequest
0 голосов
/ 18 августа 2010

Мы заинтересованы в поиске максимального количества атрибутов, которые имеет узел в документе XML. Мой код ниже с использованием C #:

        XmlDocument xmlDoc = new XmlDocument();
        xmlDoc.Load(@"C:\ABC.xml");
        XmlNode root = xmlDoc.DocumentElement;

        int nodeAttrCount = 0;
        foreach (XmlNode node in root)                            
            if (nodeAttrCount < node.Attributes.Count)
                nodeAttrCount = node.Attributes.Count;

Мы заинтересованы: есть ли у нас что-нибудь лучше, чем это? Как и любой метод или свойство, которые дают нам тот же результат или любой другой вариант.

Ответы [ 2 ]

0 голосов
/ 18 августа 2010

Вы также можете использовать LINQ to XML:

XElement el = XElement.Load("MyXML.xml");
int maxAttr = el.DescendantNodesAndSelf().OfType<XElement>().Max(x => x.Attributes().Count());

Приведенный выше код пересекает все узлы xml (он работает и с вложенными узлами) и получает максимальное количество атрибутов.


Для .net 2.0:

XmlDocument doc = new XmlDocument();
doc.Load("MyXML.xml");
int max = 0;
foreach (XmlNode xmlNode in doc.SelectNodes("//*"))
   if (max < node.Attributes.Count)
       max = node.Attributes.Count;

Это в основном то же самое, что и ваше решение;основное отличие состоит в том, что он учитывает все узлы на каждом уровне вложенности (используя навигацию XPath).

0 голосов
/ 18 августа 2010

Это три строки кода для довольно нишевого требования.Я не ожидал бы, что это уже существует в .NET Framework.

Ваш цикл foreach выглядит нормально.Вы уверены, что хотите посмотреть только на корневые элементы, а не просматривать внутри документа?

...