Anglesharp เป็นไลบรารี XML ที่ไม่มีการตรวจสอบยังได้รับการสนับสนุนโดยไลบรารี สิ่งสำคัญของ Anglesharp คือ CSS สามารถแยกวิเคราะห์ได้ ตัวแยกวิเคราะห์ที่รวมอยู่นั้นถูกสร้างขึ้นตามข้อกำหนด W3C อย่างเป็นทางการ สิ่งนี้สร้างการแสดง HTML5 DOM แบบพกพาอย่างสมบูรณ์แบบของซอร์สโค้ดที่กำหนดและทำให้มั่นใจได้ถึงความเข้ากันได้กับผลลัพธ์ในเบราว์เซอร์เอเวอร์กรีน นอกจากนี้ยังมีคุณสมบัติ DOM มาตรฐานเช่น querySelector หรือ querySelectorAll ทำงานสำหรับการสำรวจต้นไม้
⚡⚡ อพยพจาก Anglesharp 0.9 ถึง Anglesharp 0.10 หรือใหม่กว่า (รวม 1.0)? ดูเอกสารการย้ายถิ่นของเรา
BrowsingContext เป็นเหมือนแท็บเบราว์เซอร์ - ควบคุมจาก. NET!) ข้อได้เปรียบของไลบรารีที่คล้ายกันเช่น HTMLAGILITYPACK คือ DOM ที่เปิดเผยกำลังใช้ API ที่ระบุอย่างเป็นทางการ W3C อย่างเป็นทางการคือแม้กระทั่งสิ่งต่าง ๆ เช่น querySelectorAll มีอยู่ใน Anglesharp นอกจากนี้ตัวแยกวิเคราะห์ยังใช้ข้อกำหนด HTML 5.1 ซึ่งกำหนดการจัดการข้อผิดพลาดและการแก้ไของค์ประกอบ ห้องสมุด Anglesharp มุ่งเน้นไปที่การปฏิบัติตามมาตรฐานการโต้ตอบและการขยายความสามารถ ดังนั้นจึงให้นักพัฒนาเว็บทำงานกับ C# ความเป็นไปได้ทั้งหมดตามที่พวกเขารู้จากการใช้ DOM ในเบราว์เซอร์ที่ทันสมัย
ประสิทธิภาพของ Anglesharp ค่อนข้างใกล้เคียงกับประสิทธิภาพของเบราว์เซอร์ แม้แต่หน้าเว็บที่มีขนาดใหญ่มากก็สามารถประมวลผลได้ภายในมิลลิวินาที Anglesharp พยายามลดการจัดสรรหน่วยความจำและนำองค์ประกอบกลับมาใช้ใหม่ภายในเพื่อหลีกเลี่ยงการสร้างวัตถุที่ไม่จำเป็น
ตัวอย่างง่ายๆจะใช้เว็บไซต์ของ Wikipedia สำหรับการดึงข้อมูล
var config = Configuration . Default . WithDefaultLoader ( ) ;
var address = "https://en.wikipedia.org/wiki/List_of_The_Big_Bang_Theory_episodes" ;
var context = BrowsingContext . New ( config ) ;
var document = await context . OpenAsync ( address ) ;
var cellSelector = "tr.vevent td:nth-child(3)" ;
var cells = document . QuerySelectorAll ( cellSelector ) ;
var titles = cells . Select ( m => m . TextContent ) ;หรือเหมือนกันกับประเภทที่ชัดเจน:
IConfiguration config = Configuration . Default . WithDefaultLoader ( ) ;
string address = "https://en.wikipedia.org/wiki/List_of_The_Big_Bang_Theory_episodes" ;
IBrowsingContext context = BrowsingContext . New ( config ) ;
IDocument document = await context . OpenAsync ( address ) ;
string cellSelector = "tr.vevent td:nth-child(3)" ;
IHtmlCollection < IElement > cells = document . QuerySelectorAll ( cellSelector ) ;
IEnumerable < string > titles = cells . Select ( m => m . TextContent ) ;ในตัวอย่างที่เราเห็น:
ทุกคอลเลกชันใน Anglesharp รองรับคำสั่ง LINQ Anglesharp ยังให้วิธีการขยายที่เป็นประโยชน์มากมายสำหรับการรวบรวมองค์ประกอบที่ไม่สามารถพบได้ใน DOM อย่างเป็นทางการ
Anglesharp ถูกสร้างขึ้นเป็นไลบรารีที่เข้ากันได้กับ. NET Standard 2.0 ซึ่งรวมถึง แต่ไม่ จำกัด เพียง:
เอกสารของ Anglesharp อยู่ในโฟลเดอร์ DOCS ตัวอย่างเพิ่มเติมการปฏิบัติที่ดีที่สุดและข้อมูลทั่วไปสามารถพบได้ที่นั่น เอกสารนี้ยังมีรายการคำถามที่พบบ่อย
นอกจากนี้ยังมีข้อมูลเพิ่มเติมโดยติดตามการอ้างอิงไฮเปอร์บางส่วนที่กล่าวถึงในวิกิ บทความในเชิงลึกจะถูกเผยแพร่บน CodeProject โดยมีลิงก์อยู่ในวิกิที่ GitHub
โครงการมีวัตถุประสงค์เพื่อนำการใช้งานที่แข็งแกร่งของ W3C DOM สำหรับ HTML, SVG, MathML และ CSS ไปยัง CLR - ทั้งหมดที่เขียนใน C# แนวคิดก็คือคุณสามารถทำทุกอย่างด้วย DOM ใน C# ที่คุณสามารถทำได้ใน JavaScript (บวกแน่นอนมากขึ้น)
ส่วนใหญ่ของ DOM รวมอยู่ด้วยแม้ว่าบางส่วนอาจยังพลาดการใช้งาน (ระบุอย่างเต็มที่ / ถูกต้อง) เป้าหมายสำหรับ v1.0 คือการมีส่วนที่ เกี่ยวข้องทั้งหมด ที่นำมาใช้ตามข้อกำหนด W3C อย่างเป็นทางการ (พร้อมส่วนขยายที่เป็นประโยชน์โดย whatwg)
API อยู่ใกล้กับข้อกำหนด DOM4 อย่างไรก็ตามการตั้งชื่อได้รับการปรับให้ใช้กับการประชุม. NET อย่างไรก็ตามเพื่อให้ Anglesharp มีประโยชน์อย่างแท้จริงสำหรับเช่นเครื่องยนต์ JavaScript คุณลักษณะได้ถูกวางไว้บนอินเทอร์เฟซที่เกี่ยวข้อง (และวิธีการคุณสมบัติ ... ) เพื่อระบุสถานะของฟิลด์ในข้อกำหนดอย่างเป็นทางการ สิ่งนี้จะช่วยให้วัตถุ DOM สร้างขึ้นอัตโนมัติด้วย API อย่างเป็นทางการ
นี่เป็นโครงการระยะยาวซึ่งในที่สุดจะส่งผลให้มีการแยกวิเคราะห์ที่ทันสมัยสำหรับข้อความไฮเปอร์ที่ใช้มุมที่สำคัญที่สุด
ความหวังของเราคือการสร้างชุมชนเกี่ยวกับการแยกวิเคราะห์เว็บและห้องสมุดจากโครงการนี้ จนถึงตอนนี้เรามีส่วนร่วมที่ยอดเยี่ยม แต่เป้าหมายนั้นไม่ประสบความสำเร็จอย่างเต็มที่ ต้องการความช่วยเหลือ? ติดต่อกับเรา!
หากคุณรู้ว่าคุณลักษณะบางอย่างที่ ANGLESHARP หายไปในขณะนี้และคุณยินดีที่จะนำไปใช้คุณสมบัตินี้การบริจาคของคุณจะเป็นมากกว่าการต้อนรับ! นอกจากนี้หากคุณมีความคิดที่ยอดเยี่ยม - อย่าอายเราอยากได้ยิน
หากคุณมีความคิดว่าจะปรับปรุง API ได้อย่างไร (หรือสิ่งที่ขาดหายไป) ก็ยินดีต้อนรับโพสต์ / ข้อความด้วย ตัวอย่างเช่นมีการอภิปรายอย่างต่อเนื่องเกี่ยวกับสไตล์บางอย่างที่ใช้โดย Anglesharp (เช่น HTMLDocument หรือ HtmlDocument ) ในอดีต ในตอนท้าย Anglesharp หยุดโดยใช้ HTMLDocument (อย่างน้อยก็มองเห็นได้นอกห้องสมุด) ตอนนี้ Anglesharp ใช้ชื่อเช่น IDocument , IHtmlElement และอื่น ๆ การเปลี่ยนแปลงนี้จะเป็นไปไม่ได้หากไม่มีการอภิปรายที่มีผลเช่นนี้
โครงการมักจะค้นหาผู้มีส่วนร่วมเพิ่มเติม แม้ว่าคุณจะไม่มีรหัสใด ๆ ที่จะมีส่วนร่วม แต่เป็นแนวคิดสำหรับการปรับปรุงรายงานข้อผิดพลาดหรือความผิดพลาดในเอกสาร นี่คือผลงานที่ทำให้โครงการนี้ใช้งานอยู่
การสนทนาสดสามารถเกิดขึ้นได้ในการแชท Gitter ของเราซึ่งสนับสนุนการใช้บัญชี GitHub
ข้อมูลเพิ่มเติมพบได้ในแนวทางการบริจาค ผู้มีส่วนร่วมทั้งหมดสามารถพบได้ในไฟล์ผู้มีส่วนร่วม
โครงการนี้ยังได้ใช้จรรยาบรรณที่กำหนดโดยพันธสัญญาผู้สนับสนุนเพื่อชี้แจงพฤติกรรมที่คาดหวังในชุมชนของเรา
สำหรับข้อมูลเพิ่มเติมโปรดดูจรรยาบรรณ. NET
หากคุณใช้ Anglesharp บ่อยครั้ง แต่คุณไม่มีเวลาสนับสนุนโครงการโดยการมีส่วนร่วมอย่างแข็งขันคุณอาจยังสนใจที่จะให้แน่ใจว่าโครงการ Anglesharp จะเปิดไฟไว้
ดังนั้นเราจึงสร้างรูปแบบการสำรองผ่าน BountySource การบริจาคใด ๆ ยินดีต้อนรับและชื่นชมมาก เราจะใช้จ่ายเงินในการพัฒนาเวลาโดยเฉพาะเพื่อปรับปรุง Anglesharp ซึ่งจำเป็นต้องได้รับการปรับปรุงรวมถึงการลงทุนในระบบนิเวศยูทิลิตี้เว็บใน. NET (เช่นในเครื่องยนต์ JavaScript, parsers อื่น ๆ หรือผู้แสดงผลสำหรับ Anglesharp
เยี่ยมชม BountySource สำหรับรายละเอียดเพิ่มเติม
Anglesharp เขียนใน C# รุ่นล่าสุดและต้องใช้ Roslyn เป็นคอมไพเลอร์ แนะนำให้ใช้ IDE เช่น Visual Studio 2019+ บน Windows อีกทางเลือกหนึ่งคือ VSCODE (พร้อม Omnisharp หรือการใช้งานโปรโตคอลเซิร์ฟเวอร์ภาษาที่เหมาะสมอื่น) ควรเป็นเครื่องมือของตัวเลือกบนแพลตฟอร์มอื่น ๆ
รหัสพยายามทำความสะอาดให้ได้มากที่สุด โดยเฉพาะอย่างยิ่งมีการใช้กฎต่อไปนี้:
-Async เมื่อพร้อมใช้งานอย่างไรก็ตามที่สำคัญกว่านั้นคือการใช้การทดสอบที่เหมาะสม คุณสมบัติใหม่ใด ๆ ควรมาพร้อมกับชุดการทดสอบเพื่อครอบคลุมการทำงานและป้องกันการถดถอย
มีการเปลี่ยนแปลงที่มีรายละเอียดมาก หากคุณมีความสนใจในการเผยแพร่ครั้งใหญ่ให้ดูที่ GitHub รุ่น
โครงการนี้ได้รับการสนับสนุนโดย. NET Foundation
Anglesharp เปิดตัวโดยใช้ใบอนุญาต MIT สำหรับข้อมูลเพิ่มเติมดูไฟล์ใบอนุญาต