แยกตารางจากไฟล์ HTML ด้วย .NET API

Aspose.HTML for .NET โหลดไฟล์ HTML ลงใน HTMLDocument และเปิดให้เข้าถึงตารางผ่าน DOM แอปพลิเคชัน C# สามารถเลือกองค์ประกอบ <table> หนึ่งรายการหรือทั้งหมด อ่าน OuterHTML และสร้างเอกสาร HTML แยกที่มีมาร์กอัปตารางแบบสมบูรณ์


แยกทุกตารางจากไฟล์ HTML ใน C#

ตัวอย่างต่อไปนี้เลือกทุกตารางใน input.html และบันทึกแต่ละตารางเป็นไฟล์ HTML ที่มีหมายเลข URI ฐานของเอกสารต้นฉบับจะถูกส่งไปยังเอกสารผลลัพธ์แต่ละรายการ เพื่อให้ URL ทรัพยากรแบบสัมพัทธ์อ้างอิงจากตำแหน่งเดิมระหว่างการประมวลผล

โค้ด C# สำหรับแยกตาราง HTML

using Aspose.Html;
using Aspose.Html.Dom;
using System;

// Load the source HTML file
using HTMLDocument document = new HTMLDocument("input.html");

int tableNumber = 1;
foreach (Element table in document.QuerySelectorAll("table"))
{
    // Save each complete table to a separate HTML file
    string outputPath = $"table-{tableNumber}.html";

    using HTMLDocument tableDocument = new HTMLDocument(table.OuterHTML, document.BaseURI);
    tableDocument.Save(outputPath);

    tableNumber++;
}

if (tableNumber == 1)
{
    // Report that the selector returned no tables
    Console.WriteLine("No tables were found in the HTML document.");
}

ขั้นตอนการแยกตารางจาก HTML

  1. โหลดไฟล์ต้นฉบับด้วยตัวสร้าง HTMLDocument
  2. เลือกองค์ประกอบตารางด้วย QuerySelectorAll("table")
  3. วนซ้ำองค์ประกอบที่คืนมาและอ่าน OuterHTML ของแต่ละตาราง
  4. สร้าง HTMLDocument ใหม่จากมาร์กอัปที่แยกได้และ URI ฐานของเอกสารต้นฉบับ
  5. เรียก Save() พร้อมชื่อไฟล์ผลลัพธ์ที่ไม่ซ้ำกันสำหรับแต่ละตาราง

ตัวเลือกและข้อจำกัดในการแยกตาราง HTML

  • เลือกขอบเขตการแยก ใช้ table เพื่อเลือกทุกตาราง หรือตัวเลือกที่แคบลง เช่น #price-table, .results table หรือ main table เพื่อจำกัดผลลัพธ์
  • รักษามาร์กอัปของตาราง OuterHTML มีองค์ประกอบ <table> ที่เลือก แอตทริบิวต์ แถว เซลล์ และเนื้อหาซ้อนทั้งหมด
  • รักษาบริบทการอ้างอิงทรัพยากร การส่ง document.BaseURI ช่วยให้ URL แบบสัมพัทธ์ในมาร์กอัปที่แยกได้ถูกตีความเทียบกับเอกสารต้นฉบับระหว่างการประมวลผล
  • จัดการสไตล์แยกกัน สไตล์แบบอินไลน์และแอตทริบิวต์ style ภายในตารางยังอยู่ในมาร์กอัป แต่กฎใน <head> ของเอกสารต้นฉบับหรือสไตล์ชีตภายนอกจะไม่ถูกคัดลอกไปยังเอกสารที่มีเฉพาะตาราง
  • แยกมาร์กอัปออกจากการแยกข้อมูล เวิร์กโฟลว์นี้บันทึกองค์ประกอบ <table> ที่เลือกพร้อมมาร์กอัป หากต้องการรวบรวมค่าเซลล์สำหรับ JSON, CSV หรือรูปแบบอื่น ให้ใช้ แยกข้อมูลตาราง HTML

เอกสารประกอบการแยกตาราง HTML

ดู แยกตาราง HTML ใน C# สำหรับการเลือกตาราง การประมวลผลแถวและเซลล์ การแยกลิงก์ และตัวอย่างผลลัพธ์ ส่วน การแยกข้อมูล ครอบคลุมการนำทาง DOM ตัวเลือก CSS, XPath และเวิร์กโฟลว์การแยกเนื้อหาเว็บเพิ่มเติม


ติดตั้ง Aspose.HTML for .NET

ติดตั้ง Aspose.HTML for .NET จาก NuGet ด้วย .NET CLI:

dotnet add package Aspose.HTML

คุณยังสามารถใช้หน้าต่าง NuGet Package Manager หรือเรียกใช้ Install-Package Aspose.HTML ใน Package Manager Console ได้ ดูรายละเอียดการตั้งค่าใน คู่มือการติดตั้ง หรือขอ ใบอนุญาตชั่วคราว เพื่อประเมิน API โดยไม่มีข้อจำกัดของเวอร์ชันทดลอง


คำถามที่พบบ่อยเกี่ยวกับการแยกตาราง HTML

1. ฉันสามารถแยกทุกตารางจากไฟล์ HTML ไฟล์เดียวได้หรือไม่?

ได้ QuerySelectorAll("table") คืนทุกตารางที่ตรงกันตามลำดับในเอกสาร วนซ้ำผลลัพธ์และกำหนดชื่อผลลัพธ์ที่ไม่ซ้ำกันเมื่อต้องบันทึกแต่ละตารางแยกกัน

2. จะแยกเฉพาะตาราง HTML ที่ต้องการได้อย่างไร?

ใช้ QuerySelector() กับ ID คลาส หรือตัวเลือกโครงสร้างที่คงที่ เช่น #price-table หรือ main table เมธอดนี้คืนการจับคู่แรกแทนการรวบรวมองค์ประกอบ <table> ทั้งหมด

3. ตาราง HTML ที่แยกออกมายังคงรูปแบบ CSS หรือไม่?

สไตล์แบบอินไลน์และแอตทริบิวต์ style ภายในตารางจะคงอยู่ใน OuterHTML ต้องคัดลอกหรือเชื่อมโยงกฎ CSS จาก <head> เดิมหรือสไตล์ชีตภายนอกแยกต่างหาก หากต้องการให้ไฟล์อิสระมีลักษณะเหมือนเดิม

4. ฉันสามารถแยกข้อมูลตารางเป็น CSV หรือ JSON แทนการบันทึกมาร์กอัป HTML ได้หรือไม่?

ได้ แต่เป็นเวิร์กโฟลว์อีกแบบหนึ่ง วนซ้ำแถว อ่านค่า <th> และ <td> แล้วส่งไปยังตัวเขียน CSV หรือ JSON serializer ดูตัวอย่างฉบับเต็มที่ แยกข้อมูลตาราง HTML

5. ตาราง HTML ที่ซ้อนกันจะถูกแยกออกเป็นไฟล์ต่างหากหรือไม่?

ตัวเลือกทั่วไป table จับคู่ทั้งตารางภายนอกและตารางซ้อน ใช้ตัวเลือกที่เฉพาะเจาะจงมากขึ้นเมื่อตารางซ้อนควรอยู่เฉพาะภายในตารางแม่และไม่ควรถูกเขียนเป็นไฟล์แยกด้วย

เวิร์กโฟลว์ตาราง HTML ที่เกี่ยวข้อง

สร้าง แก้ไข หรือแยกค่าจากตารางด้วยคู่มือ Aspose.HTML for .NET