Десериализованный xml - проверяет наличие дочерних узлов, не зная определенного типа - PullRequest
2 голосов
/ 23 марта 2010

Я десериализировал xml-файл в объект C #, и у меня есть «объект», содержащий определенный узел, который я выбрал из этого файла.

Мне нужно проверить, есть ли у этого узла дочерние узлы. Я не знаю конкретный тип объекта в любой момент времени.

В настоящий момент я просто повторно сериализую объект в строку и загружаю его в XmlDocument перед проверкой свойства HasChildNodes, однако, когда у меня есть тысячи узлов для проверки, это чрезвычайно ресурсоемко и медленно.

Может кто-нибудь придумать, как лучше проверить, содержит ли мой объект дочерние узлы?

Большое спасибо:)

Ответы [ 2 ]

1 голос
/ 23 марта 2010

попробуйте использовать Linq2xml, у него есть класс с именем XElement (или XDocument), который намного проще использовать, чем XmlDocument.что-то вроде этого:

XElement x = XElement.Load("myfile.xml");
if (x.Nodes.Count() > 0)
{
  // do whatever
}

намного меньше кода, намного более гладко, очень читабельно.если у вас уже есть xml в виде строки, вы можете заменить Load на функцию Parse.

1 голос
/ 23 марта 2010

Полагаю, вы могли бы повернуть процесс вспять (глядя на все открытые элементы / свойства, которые не помечены [XmlIgnore], не являются null и не имеют public bool ShouldSerialize*(), который возвращает false или любой другой других шаблонов), но это кажется много работы ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...