<?xml version="1.0" encoding="UTF-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title xmlns:ns="http://www.w3.org/2005/Atom" ns:type="text">XML – Haskell – Aelve Guide</title><id>https://guide.aelve.com/haskell/feed/category/klgi6e26</id><updated>2017-09-27T21:48:28Z</updated><link xmlns:ns="http://www.w3.org/2005/Atom" ns:href="https://guide.aelve.com/haskell/feed/category/klgi6e26"/><entry><id>djvwhva7</id><title xmlns:ns="http://www.w3.org/2005/Atom" ns:type="text">xml-conduit</title><updated>2017-09-27T21:48:28Z</updated><content xmlns:ns="http://www.w3.org/2005/Atom" ns:type="html">&lt;h1&gt;  &lt;span class=&#34;item-name&#34;&gt;xml-conduit&lt;/span&gt;

  
  (&lt;a href=&#34;https://hackage.haskell.org/package/xml-conduit&#34;&gt;Hackage&lt;/a&gt;)
&lt;/h1&gt;&lt;p&gt;Streaming parsing, but has a useful non-streaming interface as well. Uses &lt;code&gt;Text&lt;/code&gt; and &lt;code&gt;ByteString&lt;/code&gt;.&lt;/p&gt;
&lt;h2&gt;Pros&lt;/h2&gt;&lt;ul&gt;&lt;p&gt;&lt;li&gt;Can parse entity references, including entities defined in the internal subset, as well as leaving entity references unresolved in the document for your code to handle itself.&lt;/li&gt;&lt;/p&gt;&lt;p&gt;&lt;li&gt;Uses &lt;code&gt;Text&lt;/code&gt;.&lt;/li&gt;&lt;/p&gt;&lt;p&gt;&lt;li&gt;The streaming interface provides position information.&lt;/li&gt;&lt;/p&gt;&lt;/ul&gt;&lt;h2&gt;Cons&lt;/h2&gt;&lt;ul&gt;&lt;p&gt;&lt;li&gt;Heavyweight in terms of dependencies&lt;/li&gt;&lt;/p&gt;&lt;/ul&gt;&lt;h2&gt;Ecosystem&lt;/h2&gt;&lt;p&gt;Uses &lt;code&gt;xml-types&lt;/code&gt; for its unresolved-entity types. In theory this allows inter-operation, but nothing else seems to buy into &lt;code&gt;xml-types&lt;/code&gt;, and the easier-out-of-the-box resolved-entity interface is defined by &lt;code&gt;xml-conduit&lt;/code&gt;.&lt;/p&gt;
</content><link xmlns:ns="http://www.w3.org/2005/Atom" ns:href="https://guide.aelve.com/haskell/xml-klgi6e26#item-djvwhva7"/></entry><entry><id>hwck5g7u</id><title xmlns:ns="http://www.w3.org/2005/Atom" ns:type="text">xmlhtml</title><updated>2017-09-27T19:44:11Z</updated><content xmlns:ns="http://www.w3.org/2005/Atom" ns:type="html">&lt;h1&gt;  &lt;span class=&#34;item-name&#34;&gt;xmlhtml&lt;/span&gt;

  
  (&lt;a href=&#34;https://hackage.haskell.org/package/xmlhtml&#34;&gt;Hackage&lt;/a&gt;)
&lt;/h1&gt;&lt;p&gt;XML and HTML 5 parsing and rendering.&lt;/p&gt;
&lt;h2&gt;Pros&lt;/h2&gt;&lt;ul&gt;&lt;p&gt;&lt;li&gt;Memory efficient&lt;/li&gt;&lt;/p&gt;&lt;/ul&gt;&lt;h2&gt;Cons&lt;/h2&gt;&lt;ul&gt;&lt;p&gt;&lt;li&gt;Both parsers are written to parse document fragments, not complete documents&lt;/li&gt;&lt;/p&gt;&lt;p&gt;&lt;li&gt;The XML parser is incapable of handling processing instructions, or defined entities&lt;/li&gt;&lt;/p&gt;&lt;p&gt;&lt;li&gt;The HTML parser is really an XML parser with HTML 5 quirks mode&lt;/li&gt;&lt;/p&gt;&lt;p&gt;&lt;li&gt;No position information&lt;/li&gt;&lt;/p&gt;&lt;/ul&gt;</content><link xmlns:ns="http://www.w3.org/2005/Atom" ns:href="https://guide.aelve.com/haskell/xml-klgi6e26#item-hwck5g7u"/></entry><entry><id>xxlhqgf8</id><title xmlns:ns="http://www.w3.org/2005/Atom" ns:type="text">xml</title><updated>2017-09-27T19:44:07Z</updated><content xmlns:ns="http://www.w3.org/2005/Atom" ns:type="html">&lt;h1&gt;  &lt;span class=&#34;item-name&#34;&gt;xml&lt;/span&gt;

  
  (&lt;a href=&#34;https://hackage.haskell.org/package/xml&#34;&gt;Hackage&lt;/a&gt;)
&lt;/h1&gt;&lt;p&gt;Light-weight library for simple parsing and creation of XML documents.&lt;/p&gt;
&lt;h2&gt;Pros&lt;/h2&gt;&lt;ul&gt;&lt;p&gt;&lt;li&gt;Small dependency set (&lt;a href=&#34;https://hackage.haskell.org/package/base&#34;&gt;base&lt;/a&gt;, &lt;a href=&#34;https://hackage.haskell.org/package/bytestring&#34;&gt;bytestring&lt;/a&gt; and &lt;a href=&#34;https://hackage.haskell.org/package/text&#34;&gt;text&lt;/a&gt;)&lt;/li&gt;&lt;/p&gt;&lt;/ul&gt;&lt;h2&gt;Cons&lt;/h2&gt;&lt;ul&gt;&lt;p&gt;&lt;li&gt;Minimal docs and no example/tutorial&lt;/li&gt;&lt;/p&gt;&lt;p&gt;&lt;li&gt;Memory inefficient (uses &lt;code&gt;String&lt;/code&gt;)&lt;/li&gt;&lt;/p&gt;&lt;p&gt;&lt;li&gt;No position information&lt;/li&gt;&lt;/p&gt;&lt;/ul&gt;</content><link xmlns:ns="http://www.w3.org/2005/Atom" ns:href="https://guide.aelve.com/haskell/xml-klgi6e26#item-xxlhqgf8"/></entry></feed>