| | К вопросу о XML-парсерах. |
| |
Posted: Mon Mar 28, 2005 10:47 am |
|
|
Binary |
Разработчик |
|
|
Joined: 17 Dec 2004 |
Posts: 1712 |
Location: Омск |
|
|
|
|
|
|
Возращаюсь к вопросу об XML-парсерах для Delphi. Я сначала использовал JvSimpleXML, но он меня, можно сказать, подставил своей не поддержкой юникода. Естесственно, оставлять Jabber-плаг-ин без поддержки юникода никак нельзя, поэтому стал использовать OmniXML. Потом Треугольник обратил наше внимание, что в Delphi 7 есть класс TXMLDocument. В последнем своем плаг-ине DrawDesk, я использовал этот парсер, считаю лучшим решением, т.к. он идет вместе с Delphi 7. С Юникодом вроде бы проблем нет. По своей структуре сильно напоминает OmniXML. |
|
_________________ And I'm feeling good! |
|
|
|
| | |
Posted: Wed Apr 27, 2005 8:48 am |
|
|
sevkin |
Отметившийся |
|
|
Joined: 24 Apr 2005 |
Posts: 5 |
|
|
|
|
|
|
|
tinyxml... хм... да, не делпхи, но...
http://sourceforge.net/projects/tinyxml/
TinyXml is a simple, small, minimal, C++ XML parser that can be easily integrating into other programs. It reads XML and creates C++ objects representing the XML document. The objects can be manipulated, changed, and saved again as XML.
Development Status: 5 - Production/Stable, 6 - Mature
Intended Audience: Developers
License: zlib/libpng License
Operating System: All 32-bit MS Windows (95/98/NT/2000/XP), All POSIX (Linux/BSD/UNIX-like OSes), OS Portable (Source code to work with many OS platforms), Linux
Programming Language: C++
Topic: Software Development
Translations: English |
|
|
|
|
| | |
Posted: Mon Nov 28, 2005 5:21 pm |
|
|
KRom |
Разработчик |
|
|
Joined: 07 Oct 2005 |
Posts: 242 |
Location: Tagan-York, South Russia |
|
|
|
|
|
|
TXMLDocument это стандартный компонент Delphi, причем возмжно даже с 5 версии. Начиная с 6 версии он точно поставляется. А стандартность и бесплатность его только улучшают. |
|
_________________ Ве?ьма веро?тно на?тупление неверо?тного. |
|
|
|
Posted: Mon Nov 28, 2005 9:00 pm |
|
|
Binary |
Разработчик |
|
|
Joined: 17 Dec 2004 |
Posts: 1712 |
Location: Омск |
|
|
|
|
|
|
ну насчет бесплатности ты погорячился. Делфи, по идее, не бесплатна... |
|
_________________ And I'm feeling good! |
|
|
|
Posted: Mon Nov 28, 2005 9:57 pm |
|
|
KRom |
Разработчик |
|
|
Joined: 07 Oct 2005 |
Posts: 242 |
Location: Tagan-York, South Russia |
|
|
|
|
|
|
Но делфи покупать что с парсером, что без него (если не учитывать Enterprise, Web, Standard версии). Так что, покупая делфя мы автоматически платим и за парсер, а вот уже использовать предоставленные компоненты или нет, решать нам. Меня интересует другой вопрос: Использует ли этот парсер движек от Ms Internet Explorer или он полностью "самописный". Если верить моей дыряой памяти, то он использует COM объекты IE при своей работе. При высоких требованиях к производительности это может вылиться в некоторые НО. Однако, это мое личное мнение, которое может быть ошибочным, поскольку, я уже больше года не занимался этой проблемой. |
|
|
|
|
| | |
Posted: Tue Nov 29, 2005 10:31 am |
|
|
Δ |
Разработчик |
|
|
Joined: 12 Jan 2005 |
Posts: 783 |
Location: Москва |
|
|
|
|
|
|
Roman wrote: | Использует ли этот парсер движек от Ms Internet Explorer или он полностью "самописный". |
У TXMLDocument есть проперти "DOMVendor", указывающее на драйвер парсера... может принимать значения: MSXML(майкрософт), Xerces XML и Open XML.
Мы тут как-то проводили исследования на сгенеренном ХМЛ (около 8 Мб размером, порядка 100000 элементов), взяв 3 основных параметра:
1. Скорость открытия (время на установку Active в True), мс
MSXML - 1437
Open XML - 10032
Xerces XML - 24453
2. Скорость доступа к произвольному элементу, мс
Open XML - 313
Xerces XML - 343
MSXML - 133422 (sic!)
3. Объём отжираемой памяти (из них сама прога около 3Мб), Кб
MSXML - 73032
Xerces XML - 90544
Open XML - 129576 |
|
|
|
|
| | |
Posted: Tue Nov 29, 2005 11:14 pm |
|
|
Lion |
Разработчик |
|
|
Joined: 10 Jan 2005 |
Posts: 699 |
Location: г. Волжский |
|
|
|
|
|
|
Похоже что MSXML реально парсит XML только при первом доступе, интересно посмотреть время второего и более обращений. |
|
|
|
|
Posted: Wed Nov 30, 2005 12:37 pm |
|
|
Δ |
Разработчик |
|
|
Joined: 12 Jan 2005 |
Posts: 783 |
Location: Москва |
|
|
|
|
|
|
Lion wrote: | Похоже что MSXML реально парсит XML только при первом доступе, интересно посмотреть время второего и более обращений. |
Сомневаюсь. Похоже что MSXML доступ к элементу (по имени) осуществляет прямым перебором всех элементов ==> скорость доступа к элементу зависит от его положения в документе.
Прочие-же парсеры, похоже, при загрузке производят сортировку и/или индексирование всех элементов.
Этим объясняется большее время загрузки и объём съедаемой памяти и весьма быстрый доступ к элемену по имени. |
|
|
|
|
| | |
Posted: Wed Jan 17, 2007 3:39 pm |
|
|
Arioch |
Бывалый Жабовод |
|
|
Joined: 17 Jan 2007 |
Posts: 97 |
|
|
|
|
|
|
|
А они все DOM-парсеры ?
Вообще для бесконечного XMPP-потока кажется лучше бы подошёл SAX-парсер и вопрос о скорости вообще не встает, только про память.
Если Jajc так может.
PS: в Delphi 5 EE нет TXMLDocument, по крайней мере мне пока не попадался.
PPS: а можно протестировать TJvSimpleXML ? Он как по скорости/памяти? М.б. можно его доработать до поддержки Unicode (WideString-UCS-2 или UTF8String)? |
|
|
|
|
Posted: Wed Jan 17, 2007 9:45 pm |
|
|
Lion |
Разработчик |
|
|
Joined: 10 Jan 2005 |
Posts: 699 |
Location: г. Волжский |
|
|
|
|
|
|
Arioch wrote: | PPS: а можно протестировать TJvSimpleXML ? Он как по скорости/памяти? М.б. можно его доработать до поддержки Unicode (WideString-UCS-2 или UTF8String)? |
Пытался - игра не стоит свеч. В JAJC вроде реализован самописный SAX. |
|
|
|
|
Posted: Wed Jan 17, 2007 11:31 pm |
|
|
Δ |
Разработчик |
|
|
Joined: 12 Jan 2005 |
Posts: 783 |
Location: Москва |
|
|
|
|
|
|
Lion wrote: | Пытался - игра не стоит свеч. В JAJC вроде реализован самописный SAX. |
Тока он заточен под протокол.. и универсальностью не блещет |
|
|
|
|
JRuDevels Forum Index » Разработка и проектирование [Devel] |
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
All times are GMT + 3 Hours
Page 1 of 1
|
|
|
|