<div dir="auto"><div><div class="gmail_quote"><div dir="ltr">Den fre 22 juni 2018 20:28Dan Lipsa <<a href="mailto:dan.lipsa@kitware.com">dan.lipsa@kitware.com</a>> skrev:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div>Thank you all for your comments. I am trying to summarize them next:</div><div><br></div><div>Advantages</div><div>1. ParaView, SMTK and CMB already use pugixml, so instead of maintaining this library in three projects we'll do it in one VTK (for those of us that work on more than one of these projects)</div><div>2. pugixml has a clean interface and it is (much) faster than the alternatives available in VTK. (only the latest pugixml version?)</div><div><br></div><div>Drawbacks:</div><div>1. no validation</div><div>2. no streaming (SAX interface)</div><div>3. an additional library to maintain in VTK.</div><div>4. Three different XML libraries in VTK.</div><div><br></div><div>Looking at the drawbacks: The features named in drawbacks 1. and 2. are not important if you don't want to use them. If you do, you have alternatives (libxml2 and expat).</div><div>I think drawback 3 is mitigated by advantage 1.</div><div><br></div><div>4. Seems to be the case that different XML libraries have different strengths (completeness versus speed). Given that, we either use the most complete library and give up speed or we have several libraries available and use them based on the feature we need most. VTK already seems to have taken this path with libxml2 and expat. I also suspect that in certain cases we just use the XML library available at the time, so we could convert the code to use a different XML library - Of course this requires time and work!<br></div><div><br></div><div>I setup a survey to better assess the community feeling on this: </div><div><br></div><div><a href="https://goo.gl/forms/3cnOk6To0zuaVP2k2" target="_blank" rel="noreferrer">https://goo.gl/forms/3cnOk6To0zuaVP2k2</a><br></div><div><br></div><div></div></div></blockquote></div></div><div dir="auto"><br></div><div dir="auto">I'm agnostic :)</div><div dir="auto"><br></div><div dir="auto">An idea would be to maybe try to eliminate expat at some point afterwards, to bring it down to just two libs again? I don't think the speed advantage of expat over libxml2 could really matter that much? (libxml2 has both a SAX-like and a pull-style reader API).</div><div dir="auto"><br></div><div dir="auto">libxml2 can then be the power horse for those who want 100% conformance and possibility of validation, while pugi for those who need speedy DOM.</div><div dir="auto"><br></div><div dir="auto">I wonder what are the speed-requiring use cases for DOM parsing though? Are you parsing many small docs or a few big ones? Is the XML parsing a true bottleneck?</div><div dir="auto"><br></div><div dir="auto">Elvis</div><div dir="auto"><br></div><div dir="auto"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div><br></div></div><br><div class="gmail_quote"><div dir="ltr">On Wed, Jun 20, 2018 at 12:13 PM Robert Michael O'Bara <<a href="mailto:bob.obara@kitware.com" target="_blank" rel="noreferrer">bob.obara@kitware.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="auto">SMTK and CMB use pugixml for years and have been very happy with it.<div><br></div><div>Bob<br><br><div id="m_22930864796171834m_6849869499684908950m_5552602244085916764AppleMailSignature">Sent from my iPad</div><div><br>On Jun 20, 2018, at 12:07 PM, Jonathan Borduas <<a href="mailto:jonathan.borduas@caboma.com" target="_blank" rel="noreferrer">jonathan.borduas@caboma.com</a>> wrote:<br><br></div><blockquote type="cite"><div>
<div class="m_22930864796171834m_6849869499684908950m_5552602244085916764WordSection1">
<p class="MsoNormal">My 2 cents here is that speed is of the essence. Validating XML are good for debugging, however I found that most don’t take the time to create an XSD file to enable the validation.
<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">In most of our cases at Caboma, XML and meant to be human readable and editable, but it is rare that we manually edit the structure of an XML file.
<br>
<br>
<u></u><u></u></p>
<p class="MsoNormal">However, we do wait after .xml parsing when the files are 20mb+. We hope that the community would move to the latest version of pugixml (1.9): by looking at the changelogs, there was a lot of performance improvements since version 1.4 (the
current version used in ParaView).<br>
<a href="https://pugixml.org/docs/manual.html#v1.5" target="_blank" rel="noreferrer">https://pugixml.org/docs/manual.html#v1.5</a><u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">Best<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">Jonathan Borduas<u></u><u></u></p>
<p class="MsoNormal">CTO, Caboma Inc. <u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal"><b>From:</b> vtk-developers <<a href="mailto:vtk-developers-bounces@public.kitware.com" target="_blank" rel="noreferrer">vtk-developers-bounces@public.kitware.com</a>>
<b>On Behalf Of </b>David E DeMarle<br>
<b>Sent:</b> Wednesday, June 20, 2018 11:49 AM<br>
<b>To:</b> Elvis Stansvik <<a href="mailto:elvis.stansvik@orexplore.com" target="_blank" rel="noreferrer">elvis.stansvik@orexplore.com</a>><br>
<b>Cc:</b> vtkdev <<a href="mailto:vtk-developers@vtk.org" target="_blank" rel="noreferrer">vtk-developers@vtk.org</a>><br>
<b>Subject:</b> Re: [vtk-developers] Add pugixml to VTK<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<div>
<blockquote style="border:none;border-left:solid #cccccc 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-right:0in">
<p class="MsoNormal"> I was thinking more if there should be a push towards one single lib, ...<u></u><u></u></p>
</blockquote>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal">I for one would really like us to get down to just one xml parser in VTK. The more the less merrier in terms of maintenance effort and project complexity eh?<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<div>
<div>
<div>
<div>
<div>
<p class="MsoNormal">David E DeMarle<br>
Kitware, Inc.<br>
Principal Engineer<br>
21 Corporate Drive<br>
Clifton Park, NY 12065-8662<br>
Phone: 518-881-4909<u></u><u></u></p>
</div>
</div>
</div>
</div>
</div>
</div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<p class="MsoNormal"><u></u> <u></u></p>
<div>
<div>
<p class="MsoNormal">On Tue, Jun 19, 2018 at 3:36 PM Elvis Stansvik <<a href="mailto:elvis.stansvik@orexplore.com" target="_blank" rel="noreferrer">elvis.stansvik@orexplore.com</a>> wrote:<u></u><u></u></p>
</div>
<blockquote style="border:none;border-left:solid #cccccc 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-right:0in">
<div>
<div>
<div>
<p class="MsoNormal">2018-06-16 8:37 GMT+02:00 Chiranjib Sur <<a href="mailto:sur.chiranjib@gmail.com" target="_blank" rel="noreferrer">sur.chiranjib@gmail.com</a>>:<u></u><u></u></p>
<blockquote style="border:none;border-left:solid #cccccc 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-right:0in">
<div>
<p class="MsoNormal">My few cents... The disadvantage with pugixml is that it's a non-validating parser. If I want to make full use of XML schema for any custom developed plugin, it's a very poor choice then.<u></u><u></u></p>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal">Any thoughts?<u></u><u></u></p>
</div>
</div>
</blockquote>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal">Also worth noting that it's a DOM-like parser only AFAIK, so if you want to do streaming parsing in a push paradigm à la SAX or a pull paradigm à la libxml2's reader interface, you'd need to turn to another library. Note that may not be
a problem if VTK already has libxml2 as a dep, since then you could use that. I was thinking more if there should be a push towards one single lib, then it might make sense to pick one that has both DOM and streaming interfaces (don't know if that's a goal/consideration
though).<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal">Elvis<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<blockquote style="border:none;border-left:solid #cccccc 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-right:0in">
<div>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
<div>
<p class="MsoNormal">Thanks and regards,<br>
Chiranjib<br>
<br>
------<br>
Using hand held device. Sorry for the typo, if any.<u></u><u></u></p>
</div>
</div>
</div>
<div>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
<div>
<div>
<p class="MsoNormal">On Fri, Jun 15, 2018, 11:59 PM Utkarsh Ayachit <<a href="mailto:utkarsh.ayachit@kitware.com" target="_blank" rel="noreferrer">utkarsh.ayachit@kitware.com</a>> wrote:<u></u><u></u></p>
</div>
<blockquote style="border:none;border-left:solid #cccccc 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-right:0in">
<p class="MsoNormal" style="margin-bottom:12.0pt">> I thought Ben Boeckel was working on a removing as many things from ThirdParty as possible (and making them parts of a superbuild). So perhaps the CityGML reader should live in a VTK module that requires an
external pugi? I know pugi is small, but...<br>
<br>
I am not sure that's correct. He was doing that for Python 3rd party<br>
modules. Are you referring to that?<br>
_______________________________________________<br>
Powered by <a href="http://www.kitware.com" target="_blank" rel="noreferrer">www.kitware.com</a><br>
<br>
Visit other Kitware open-source projects at <a href="http://www.kitware.com/opensource/opensource.html" target="_blank" rel="noreferrer">
http://www.kitware.com/opensource/opensource.html</a><br>
<br>
Search the list archives at: <a href="http://markmail.org/search/?q=vtk-developers" target="_blank" rel="noreferrer">
http://markmail.org/search/?q=vtk-developers</a><br>
<br>
Follow this link to subscribe/unsubscribe:<br>
<a href="https://public.kitware.com/mailman/listinfo/vtk-developers" target="_blank" rel="noreferrer">https://public.kitware.com/mailman/listinfo/vtk-developers</a><u></u><u></u></p>
</blockquote>
</div>
</div>
</div>
<p class="MsoNormal" style="margin-bottom:12.0pt"><br>
_______________________________________________<br>
Powered by <a href="http://www.kitware.com" target="_blank" rel="noreferrer">www.kitware.com</a><br>
<br>
Visit other Kitware open-source projects at <a href="http://www.kitware.com/opensource/opensource.html" target="_blank" rel="noreferrer">
http://www.kitware.com/opensource/opensource.html</a><br>
<br>
Search the list archives at: <a href="http://markmail.org/search/?q=vtk-developers" target="_blank" rel="noreferrer">
http://markmail.org/search/?q=vtk-developers</a><br>
<br>
Follow this link to subscribe/unsubscribe:<br>
<a href="https://public.kitware.com/mailman/listinfo/vtk-developers" target="_blank" rel="noreferrer">https://public.kitware.com/mailman/listinfo/vtk-developers</a><br>
<br>
<u></u><u></u></p>
</blockquote>
</div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
</div>
<p class="MsoNormal" style="margin-bottom:12.0pt">_______________________________________________<br>
Powered by <a href="http://www.kitware.com" target="_blank" rel="noreferrer">www.kitware.com</a><br>
<br>
Visit other Kitware open-source projects at <a href="http://www.kitware.com/opensource/opensource.html" target="_blank" rel="noreferrer">
http://www.kitware.com/opensource/opensource.html</a><br>
<br>
Search the list archives at: <a href="http://markmail.org/search/?q=vtk-developers" target="_blank" rel="noreferrer">
http://markmail.org/search/?q=vtk-developers</a><br>
<br>
Follow this link to subscribe/unsubscribe:<br>
<a href="https://public.kitware.com/mailman/listinfo/vtk-developers" target="_blank" rel="noreferrer">https://public.kitware.com/mailman/listinfo/vtk-developers</a><u></u><u></u></p>
</blockquote>
</div>
</div>
</div></blockquote><blockquote type="cite"><div><span>_______________________________________________</span><br><span>Powered by <a href="http://www.kitware.com" target="_blank" rel="noreferrer">www.kitware.com</a></span><br><span></span><br><span>Visit other Kitware open-source projects at <a href="http://www.kitware.com/opensource/opensource.html" target="_blank" rel="noreferrer">http://www.kitware.com/opensource/opensource.html</a></span><br><span></span><br><span>Search the list archives at: <a href="http://markmail.org/search/?q=vtk-developers" target="_blank" rel="noreferrer">http://markmail.org/search/?q=vtk-developers</a></span><br><span></span><br><span>Follow this link to subscribe/unsubscribe:</span><br><span><a href="https://public.kitware.com/mailman/listinfo/vtk-developers" target="_blank" rel="noreferrer">https://public.kitware.com/mailman/listinfo/vtk-developers</a></span><br><span></span><br></div></blockquote></div></div>_______________________________________________<br>
Powered by <a href="http://www.kitware.com" rel="noreferrer noreferrer" target="_blank">www.kitware.com</a><br>
<br>
Visit other Kitware open-source projects at <a href="http://www.kitware.com/opensource/opensource.html" rel="noreferrer noreferrer" target="_blank">http://www.kitware.com/opensource/opensource.html</a><br>
<br>
Search the list archives at: <a href="http://markmail.org/search/?q=vtk-developers" rel="noreferrer noreferrer" target="_blank">http://markmail.org/search/?q=vtk-developers</a><br>
<br>
Follow this link to subscribe/unsubscribe:<br>
<a href="https://public.kitware.com/mailman/listinfo/vtk-developers" rel="noreferrer noreferrer" target="_blank">https://public.kitware.com/mailman/listinfo/vtk-developers</a><br>
<br>
</blockquote></div>
_______________________________________________<br>
Powered by <a href="http://www.kitware.com" rel="noreferrer noreferrer" target="_blank">www.kitware.com</a><br>
<br>
Visit other Kitware open-source projects at <a href="http://www.kitware.com/opensource/opensource.html" rel="noreferrer noreferrer" target="_blank">http://www.kitware.com/opensource/opensource.html</a><br>
<br>
Search the list archives at: <a href="http://markmail.org/search/?q=vtk-developers" rel="noreferrer noreferrer" target="_blank">http://markmail.org/search/?q=vtk-developers</a><br>
<br>
Follow this link to subscribe/unsubscribe:<br>
<a href="https://public.kitware.com/mailman/listinfo/vtk-developers" rel="noreferrer noreferrer" target="_blank">https://public.kitware.com/mailman/listinfo/vtk-developers</a><br>
<br>
</blockquote></div></div></div>