<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="https://www.dotnetzone.gr:443/cs/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>.NET Framework</title><link>https://www.dotnetzone.gr:443/cs/forums/14/ShowForum.aspx</link><description>Θέματα για threading, remoting, reflection, exception handling, security, regex κλπ.</description><dc:language>el</dc:language><generator>CommunityServer 2.1 SP3 (Build: 20423.1)</generator><item><title>Απ: going through an XML file... Ποιος είναι ο πιο γρήγορος τρόπος;</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/55275.aspx</link><pubDate>Thu, 19 Nov 2009 00:51:06 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:55275</guid><dc:creator>Παναγιώτης Καναβός</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/55275.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=14&amp;PostID=55275</wfw:commentRss><description>&lt;P&gt;Αν το loading συμβαίνει συχνά&amp;nbsp;η καλύτερη λύση είναι αυτή του Μάνου. Να φορτώσεις το XML σε μία βάση και μετά να κάνεις queries στη βάση. Διαφορετικά μία φορά στο τόσο τα φορτώνεις όλα στη μνήμη και κάνεις τα query σου.&lt;/P&gt;</description></item><item><title>Απ: going through an XML file... Ποιος είναι ο πιο γρήγορος τρόπος;</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/55274.aspx</link><pubDate>Wed, 18 Nov 2009 23:28:36 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:55274</guid><dc:creator>miket969</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/55274.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=14&amp;PostID=55274</wfw:commentRss><description>Σας ευχαριστώ όλους για τις απαντήσεις &amp;nbsp;:)</description></item><item><title>Απ: going through an XML file... Ποιος είναι ο πιο γρήγορος τρόπος;</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/55273.aspx</link><pubDate>Wed, 18 Nov 2009 23:10:57 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:55273</guid><dc:creator>Τάσκος Γιώργος</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/55273.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=14&amp;PostID=55273</wfw:commentRss><description>Ευχαριστώ για την απάντηση Παναγιώτη αν και την έκανα EDIT την ερώτηση για να μην αλλάξω focus.&lt;br&gt;Ξέρω πως πολλές τεχνολογίες ανταλλάσουν πληροφορίες σε XML Format.&lt;br&gt;Πάντως και πάλι μου φαίνονται πολλά, 1GB ας πούμε XML &lt;img src="http://www.dotnetzone.gr/cs/emoticons/emotion-3.gif" alt="Surprise" /&gt;, όπως κι αν έχει, λύση υπάρχει, αλα .NET Style &lt;img src="http://www.dotnetzone.gr/cs/emoticons/emotion-2.gif" alt="Big Smile" /&gt;&lt;br&gt;&lt;br&gt;@miket969:&lt;br&gt;&lt;br&gt;Θυσίασε λίγο μνήμη, είναι και φθηνή άλλωστε τελευταία :P&lt;br&gt;</description></item><item><title>Απ: going through an XML file... Ποιος είναι ο πιο γρήγορος τρόπος;</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/55272.aspx</link><pubDate>Wed, 18 Nov 2009 23:03:32 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:55272</guid><dc:creator>miket969</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/55272.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=14&amp;PostID=55272</wfw:commentRss><description>Ακριβώς έτσι είναι. Αλλά από ότι βλέπω δεν υπάρχει κάτι πέρα από το να φορτώσω όλο το XML μνήμη. Πρέπει να θυσιάσω χρόνο ή μνήμη (όπως πάντα άλλωστε :Ρ)</description></item><item><title>Απ: going through an XML file... Ποιος είναι ο πιο γρήγορος τρόπος;</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/55271.aspx</link><pubDate>Wed, 18 Nov 2009 23:00:18 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:55271</guid><dc:creator>Παναγιώτης Καναβός</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/55271.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=14&amp;PostID=55271</wfw:commentRss><description>Είναι λίγο περίεργο να πηγαίνεις να απαντήσεις σε κάτι και να λείπει η ερώτηση! O gtas ρώτησε πως βγαίνουν XML αρχεία εκατοντάδων MB? Πολύ εύκολα. Όταν χρησιμοποιείς XML ως data transfer format, τα αρχεία σου θα βγουν μεγάλα. Είτε μεταφέρεις transactions από ένα σύστημα σε άλλο όπως λέει ο Μάνος, είτε φορτώνεις χαρτογραφικά δεδομένα σε GML, υπάρχουν πάντα περιπτώσεις που ένα data file μπορεί να σου βγει τεράστιο. Η χρήση XML αυξάνει κατά πολύ τον όγκο των αρχείων αλλά αυτό είναι το τίμημα που πληρώνεις.</description></item><item><title>Απ: going through an XML file... Ποιος είναι ο πιο γρήγορος τρόπος;</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/55270.aspx</link><pubDate>Wed, 18 Nov 2009 22:51:37 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:55270</guid><dc:creator>Τάσκος Γιώργος</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/55270.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=14&amp;PostID=55270</wfw:commentRss><description>[EDITED]&lt;br&gt;&lt;br&gt;Απάντησε ο Παναγιώτης που ήξερε το θέμα Loading Large XML στην μνήμη...&lt;br&gt;&lt;br&gt;&lt;br&gt;</description></item><item><title>Απ: going through an XML file... Ποιος είναι ο πιο γρήγορος τρόπος;</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/55269.aspx</link><pubDate>Wed, 18 Nov 2009 22:48:48 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:55269</guid><dc:creator>Παναγιώτης Καναβός</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/55269.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=14&amp;PostID=55269</wfw:commentRss><description>&lt;P&gt;Το LINQ to XML είναι ο τρόπος με τον οποίο κάνεις το query και έχει σχετικά μικρή επίδραση όταν το αρχείο είναι 250 MB.&amp;nbsp;Είτε χρησιμοποιήσεις LINQ to XML και το XDocument, είτε XPath και το XPathDocument, αυτό που έχει σημασία είναι ότι φορτώνεις τα 250MB στη μνήμη πρίν γίνει το query. Το X(Path)Doument θα κάνει parse το XML και θα δημιουργεί ένα δέντρο στο οποίο μπορείς μετά να κάνεις queries χρησιμοποιώντας την αντίστοιχη τεχνολογία.&lt;/P&gt;
&lt;P&gt;Αν το φόρτωμα όλου του αρχείου στη μνήμη δεν είναι πρόβλημα και οι δύο τεχνολογίες μπορούν να δώσουν παραπλήσιες επιδόσεις. Ποιά είναι γρηγορότερη όμως θα βγει μόνο με benchmark.&lt;/P&gt;</description></item><item><title>Απ: going through an XML file... Ποιος είναι ο πιο γρήγορος τρόπος;</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/55268.aspx</link><pubDate>Wed, 18 Nov 2009 22:43:11 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:55268</guid><dc:creator>miket969</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/55268.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=14&amp;PostID=55268</wfw:commentRss><description>Έστειλες ακριβώς όπως έγραφα το ίδιο πράγμα ακριβώς :Ρ. Ιδού:&lt;div&gt;"Ευχαριστώ και για τις δύο απαντήσεις, αλλά όσον αφορά αυτή, εκεί που θα κάνεις XDocument.Load(), δε θα φορτώσει όλο το XML στη μνήμη; Και καλά για τα 250ΜΒ αλλά όταν έχω 500,750,1000 κλπ... Αν ισχύει αυτό που λέω δε θα είναι εφικτό να το τρέξουν μικρότερα μηχανήματα"&lt;/div&gt;</description></item><item><title>Απ: going through an XML file... Ποιος είναι ο πιο γρήγορος τρόπος;</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/55267.aspx</link><pubDate>Wed, 18 Nov 2009 22:40:12 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:55267</guid><dc:creator>manosB</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/55267.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=14&amp;PostID=55267</wfw:commentRss><description>&lt;BLOCKQUOTE&gt;&lt;div&gt;&lt;img src="http://www.dotnetzone.gr/cs/Themes/default/images/icon-quote.gif"&gt; &lt;strong&gt;Τάσκος Γιώργος:&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;Για πολύ όμορφο XML Querying μπορείς να χρησιμοποιήσεις LINQ to XML.&lt;/div&gt;&lt;/BLOCKQUOTE&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Συμφωνώ και προσυπογράφω ότι η&amp;nbsp;&lt;span class="Apple-style-span"&gt;LINQ to XML είναι o πιο elegant τρόπος. Και εγώ αυτόν χρησιμοποιώ πια.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;br&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;Εδώ το θέμα όμως είναι performance και δεν νομίζω ότι αυτός ο τρόπος είναι πιο γρήγορος. Μάλλον για να ακριβολογώ δεν ξέρω αν είναι πιο γρήγορος.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;br&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;Τι γίνεται όταν έχεις ένα αρχείο με trunsuctions 500ΜΒ++.?????&amp;nbsp;&lt;/span&gt;&lt;/div&gt;</description></item><item><title>Απ: going through an XML file... Ποιος είναι ο πιο γρήγορος τρόπος;</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/55266.aspx</link><pubDate>Wed, 18 Nov 2009 22:33:20 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:55266</guid><dc:creator>Τάσκος Γιώργος</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/55266.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=14&amp;PostID=55266</wfw:commentRss><description>Για πολύ όμορφο XML Querying μπορείς να χρησιμοποιήσεις LINQ to XML.&lt;br&gt;&lt;br&gt;Ξεκινώντας με την XDocument.Load("xmlFile");&lt;br&gt;&lt;br&gt;Και συνεχίζοντας δημιουργώντας queries ξεκινώντας από το root του αρχείου.&lt;br&gt;Μπορείς να πάρεις Attributes, Elements, και να κάνεις ότι θέλεις. Ακόμη έχεις και τις&lt;br&gt;extension methods. Και φυσικά όλα τα Linq results είναι αυτόματα και DataSource.&lt;br&gt;&lt;br&gt;Example:&lt;br&gt;&lt;br&gt;&lt;pre&gt;&lt;span style="color:Black;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;var customersInCountry &lt;span style="color:Red;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;=&lt;/span&gt;
  from cust &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;in&lt;/span&gt; customers.Descendants(&lt;span style="font-family:Courier New;font-size:11px;font-weight:normal;"&gt;"Customer"&lt;/span&gt;)
  where cust.Element(&lt;span style="font-family:Courier New;font-size:11px;font-weight:normal;"&gt;"Country"&lt;/span&gt;).Value == myCountryParam
  select &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;new&lt;/span&gt;
     {
        CustomerID &lt;span style="color:Red;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;=&lt;/span&gt; cust.Attribute(&lt;span style="font-family:Courier New;font-size:11px;font-weight:normal;"&gt;"CustomerID"&lt;/span&gt;).Value,
        Company &lt;span style="color:Red;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;=&lt;/span&gt; cust.Element(&lt;span style="font-family:Courier New;font-size:11px;font-weight:normal;"&gt;"Company"&lt;/span&gt;).Value,
        Phone &lt;span style="color:Red;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;=&lt;/span&gt; cust.Element(&lt;span style="font-family:Courier New;font-size:11px;font-weight:normal;"&gt;"Phone"&lt;/span&gt;).Value 
     };&lt;/span&gt;&lt;/pre&gt;&lt;br&gt;</description></item><item><title>Απ: going through an XML file... Ποιος είναι ο πιο γρήγορος τρόπος;</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/55264.aspx</link><pubDate>Wed, 18 Nov 2009 22:20:10 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:55264</guid><dc:creator>manosB</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/55264.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=14&amp;PostID=55264</wfw:commentRss><description>Επειδή το χρειάστηκα σε μια περίπτωση να διαβάσω ένα αρκετά μεγάλο αρχείο XML έκανα μια παράκαμψη και χρησιμοποίησα τον SQL Server. Ειδικότερα χρησιμοποίησα &lt;b&gt;SQLXML Bulk Load&lt;/b&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Πλεονεκτήματα αυτής της λύσης&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Πολύ γρήγορο insert στους πίνακες του SQL Server (bulk insert)&lt;/li&gt;&lt;li&gt;Πολύ εύκολη αναζήτηση &amp;nbsp;με απλές SQL Commands (εποχές προ LINQ)&lt;/li&gt;&lt;li&gt;Τα join σε σώνουν από άπειρο χρόνο και η αναζήτηση γίνεται πολύ αποδοτική&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;Μειονεκτήματα&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Ύπαρξη SQL Server&lt;/li&gt;&lt;li&gt;o &lt;span class="Apple-style-span"&gt;SQLXML Bulk Load είναι&amp;nbsp;COM object άρα θα χρειαστείς και ένα wrapper για να το χρησιμοποιήσεις με το .net&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;Δες βασικά &lt;a href="http://msdn.microsoft.com/en-us/library/ms171878.aspx"&gt;αυτό &lt;/a&gt;το Παράδειγμα από το MSDN&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Βασικά εξαρτάται από το Background του καθενός. Εγώ επειδή ξεκίνησα ως database developer εκεί βρήκα την λύση. Πιστεύω πάντως ότι είναι η πιο απλή.&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;</description></item><item><title>going through an XML file... Ποιος είναι ο πιο γρήγορος τρόπος;</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/55263.aspx</link><pubDate>Wed, 18 Nov 2009 21:46:27 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:55263</guid><dc:creator>miket969</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/55263.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=14&amp;PostID=55263</wfw:commentRss><description>Αυτό το thread δεν είναι τόσο μια αναζήτηση συγκεκριμένης απάντησης σε κώδικα όσο γενικότερων ιδεών. Ιδού το θέμα:&lt;div&gt;Έχω ένα XML αρχείο της τάξεως των πολλαπλασίων του 250ΜΒ. Ψάχνω για συγκεκριμένα elements τα δεδομένα των οποίων επεξεργάζομαι. Το να περάσει όλα τα elements στα 250ΜΒ με έναν απλό XmlReader παίρνει πολύ λίγη μνήμη αλλά περίπου 4 ώρες σε χρόνο. Το πρώτο είναι φυσικό αφού δε φορτώνεται όλο το XML στη μνήμη (σαν DOM ας πούμε) και ο χρόνος είναι πάλι λογικός αφού ο XmlReader περνάει όλο το αρχείο σειριακά tag προς tag, attribute προς attribute, inner text προς inner text...&lt;/div&gt;&lt;div&gt;Η ερώτησή μου είναι: υπάρχει κάποιος τρόπος (βιβλιοθήκη στο .ΝΕΤ, αλγόριθμος κλπ) που να μπορεί να βοηθήσει στη μείωση του χρόνου επεξεργασίας; (Το segmentation του XML δεν είναι εφικτό, για όσους σκέφτηκαν τα threads :P )&lt;/div&gt;</description></item></channel></rss>