Tuesday, 15 January 2013

c# - htmlAgilityPack parse table to datatable or array -


मेरे पास ये टेबल हैं:

  & lt; table & gt; & LT; tbody & gt; & Lt; tr & gt; & lt; th & gt; हैडर 1 & lt; / th & gt; & lt; / tr & gt; & Lt; / tbody & gt; & Lt; / तालिका & gt; & LT; तालिका & gt; & LT; tbody & gt; & LT; टीआर & gt; & Lt; th & gt; हैडर 1 & lt; / th & gt; & Lt; th & gt; हैडर 2 & lt; / th & gt; & Lt; th & gt; हैडर 3 & lt; / th & gt; & Lt; th & gt; हैडर 4 & lt; / th & gt; & Lt; th & gt; हैडर 5 & lt; / th & gt; & Lt; / टीआर & gt; & LT; टीआर & gt; & Lt; td & gt; पाठ 1 & lt; / td & gt; & Lt; td & gt; पाठ 2 & lt; / td & gt; & Lt; td & gt; पाठ 3 & lt; / td & gt; & Lt; td & gt; पाठ 4 & lt; / td & gt; & Lt; td & gt; पाठ 5 & lt; / td & gt; & Lt; / टीआर & gt; & Lt; / tbody & gt; & Lt; / तालिका & gt;  

मैं इस कोड का उपयोग कर एक सरणी या सूची में बदलने की कोशिश कर रहा हूं:

  var query = doc.DocumentNode.SelectNodes ("// तालिका ")। तालिका में पंक्ति से कास्ट & lt; HtmlNode & gt; () तालिका में। चयन करें (" tr ")। पंक्ति में हैडर से कास्ट & lt; HtmlNode & gt; ()। चयन करेंनोड (" वें ")। पंक्ति में सेल से कास्ट & lt; HtmlNode & gt; () । चयन करें ("टीडी")। कास्ट & lt; HtmlNode & gt; () नई {तालिका = तालिका.आईडी, पंक्ति = पंक्ति का चयन करें। इनरटेक्स्ट, हैडर = हैडर.इनरटेक्स्ट, सेल टेक्स्ट = सेल। इनरटेक्स्ट};  

लेकिन यह काम नहीं करता है क्या गलत है?

कुछ नोट्स:

  • आपको आवश्यकता नहीं है
  • आप मानते हैं कि प्रत्येक पंक्ति के शीर्ष लेख हैं
  • चयन नोड्स को एक एक्सपेथ प्राप्त करने की जरूरत है और आप केवल नामों को पार कर रहे हैं

अगर मैं आप मैं अपने foreach का इस्तेमाल कर सकते हैं और अपने डेटा को मॉडल बना सकते हैं, इस तरह से मुझे अधिक नियंत्रण और दक्षता मिलती है, लेकिन अगर आप अभी भी ऐसा करना चाहते हैं तो यह तरीका यह है कि यह कैसे होना चाहिए

  var query = Doc.DocumentNode.SelectNodes ("// table") में तालिका से जहां तालिका। डिस्केन्डेंट्स ("tr")। गणना () & gt; 1 // सुनिश्चित करें कि तालिका में पंक्ति से शीर्षक पंक्ति के अलावा अन्य पंक्तियां हैं। चयन करें ((".// tr [position ()> gt 1 1]") // पंक्ति में सेल से हैडर पंक्ति को छोड़ दें। चयन करें नोड (( "./td")) से शीर्ष लेख तालिका में। चयन नोड (".// tr [1] / वें") // हेडर पंक्ति कोशिकाओं का चयन करें जो कि पहली tr का चयन करें नया {तालिका = तालिका.आईडी, पंक्ति = पंक्ति .इनर टेक्स्ट, हेडर = हेडर। इनरटेक्स्ट, सेलटेक्स्ट = सेल। इनरटेक्स्ट};  

No comments:

Post a Comment