Как использовать управляемый событиями синтаксический анализатор SAX (Simple API FOR XML) в C # или лучше использовать пространство имен System.XML? - PullRequest
3 голосов
/ 12 ноября 2010

В C ++ мы можем импортировать msxml DLL в наше приложение и затем реализовать методы интерфейса ISAXContentHandler в классе нашего приложения.Позже создайте объект ISAXReader и вызовите contentHandler с экземпляром этого класса, где мы дали реализацию для интерфейсов обработчика событий.
Аналогично, я хочу добиться того же в C #.Есть ли способ сделать это в C # ??Я имею в виду, есть ли какой-нибудь способ анализа SAX на основе событий в C #.Я подумал, что есть еще один метод, который поможет мне в анализе XML-документа и получении XML-информации в мое приложение.Я перешел по ссылке "http://www.codeguru.com/csharp/csharp/cs_data/xml/article.php/c4221"

. Здесь используется DOM, и используется пространство имен System.XML. Может ли кто-нибудь помочь мне в этом, ---- Как можно достичь события?управляемый синтаксический анализ XML в C # , или я должен использовать пространство имен System.XML (DOM). Если существует управляемый событием SAX способ plz, дайте мне знать, как это сделать в C #

Ответы [ 2 ]

2 голосов
/ 12 ноября 2010

Я думаю, что ближе всего к SAX-ридеру в .Net framework является класс XmlReader .Он не основан на событиях, но позволяет подобным образом перебирать документ.Посмотрите на этот пример: http://msdn.microsoft.com/en-us/library/system.xml.xmlreader.read.aspx

Если вам нужна максимальная производительность, то XmlReader является хорошим выбором, но есть и другие альтернативы, которые предлагают более дружественный API.Класс XmlDocument позволяет обрабатывать документ xml как иерархическое дерево, а класс XDocument позволяет использовать LINQ для анализа xml.Какая из них вам нужна, зависит от того, с какой моделью вам удобно и вашими требованиями.

0 голосов
/ 12 ноября 2010

Я столкнулся с подобной проблемой некоторое время назад.Хотя я не могу ответить, что лучше, уже реализованный System.XML DOM или парсер C # SAX (это действительно зависит от вашего приложения), я могу вам сказать, что действительно возможно реализовать парсер SAX в C #.

Фактически, это уже было сделано Мартином Фридрихом в CodeProject: На пути к декларативной среде SAX: Часть 1. Простое сопоставление SAX-to-C # .

...