เครื่องมือทดสอบ XPath

วาง XML หรือ HTML ได้สูงสุด 1,000,000 อักขระ การประเมินผลเกิดขึ้นในเบราว์เซอร์นี้โดยใช้ XPath 1.0

ใช้ XPath 1.0 ได้ทั้งแบบสัมบูรณ์และแบบสัมพัทธ์ prefix ที่ประกาศไว้ในเอกสารจะถูกลงทะเบียนให้อัตโนมัติ ส่วน namespace เริ่มต้นเรียกใช้ได้ผ่าน prefix d

ประเมิน XPath

การเขียน XPath สำหรับงาน web scraping หรือ XSLT คือการเดาสุ่มไปเรื่อย ๆ ถ้าคุณไม่มีสนามทดลองแบบสด เครื่องมือนี้รับ XML หรือ HTML ของคุณในช่องหนึ่งและนิพจน์ในอีกช่องหนึ่ง แล้วประเมิน XPath 1.0 ด้วยเอนจินของเบราว์เซอร์ของคุณเอง จากนั้นแสดงทุกโหนดที่ตรงกันพร้อมชนิดโหนด แอตทริบิวต์ เนื้อหาข้อความ และมาร์กอัปที่ซีเรียไลซ์แล้ว นิพจน์แบบสเกลาร์อย่าง count(//book) จะคืนค่าออกมาโดยตรง ส่วนพรีฟิกซ์เนมสเปซที่ประกาศไว้ในเอกสารจะถูกลงทะเบียนให้อัตโนมัติ ทุกอย่างทำงานในเบราว์เซอร์ของคุณ: เอกสารไม่ถูกอัปโหลดไปที่ใดเลย

วิธีทดสอบนิพจน์ XPath

  1. 1

    วาง XML หรือ HTML

    การตรวจจับอัตโนมัติจะสลับไปใช้การแยกวิเคราะห์ HTML แบบผ่อนปรนเมื่อพบ doctype หรือรูตของ HTML และคุณยังบังคับเลือกโหมด XML หรือ HTML เองได้

  2. 2

    ป้อนนิพจน์ XPath ของคุณ

    แบบสัมบูรณ์ (`/library/book`) หรือแบบสัมพัทธ์ (`//div[@class='card']`) ใช้ได้กับนิพจน์ XPath 1.0 ทุกแบบ

  3. 3

    ประเมินผล

    เอนจิน XPath ของเบราว์เซอร์รันคิวรีในเครื่องของคุณเอง ไม่มีการส่งอะไรไปยังเซิร์ฟเวอร์

  4. 4

    ตรวจดูผลลัพธ์

    แต่ละรายการที่ตรงกันจะแสดงชนิดโหนด แอตทริบิวต์ ข้อความที่ตัดให้สั้น และมาร์กอัปที่ซีเรียไลซ์แล้ว โดยแสดงได้สูงสุด 200 รายการ

พื้นฐาน XPath 1.0

นิพจน์ สิ่งที่ตรงกัน
/books/book <book> ที่เป็นลูกของรูต <books>
//book <book> ทุกตัวไม่ว่าอยู่ตรงไหนของเอกสาร
//book[@id='42'] <book> ที่มีแอตทริบิวต์ id เท่ากับ 42
//book[1] <book> ตัวแรกของแต่ละพาเรนต์ (ไม่ใช่ของทั้งเอกสาร)
(//book)[1] <book> ตัวแรกของทั้งเอกสาร
//book[title='1984'] <book> ที่ข้อความใน <title> คือ “1984”
//book/@id แอตทริบิวต์ id ของทุกอิลิเมนต์ <book>
//book[position() > 1] <book> ทุกตัวยกเว้นตัวแรก
//book[last()] <book> ตัวสุดท้ายของแต่ละพาเรนต์

นิพจน์แบบสเกลาร์ก็ใช้ได้เช่นกัน: count(//book) คืนค่าตัวเลข string(//title) คืนสตริง และ boolean(//book[@id]) คืนจริงหรือเท็จ เครื่องมือจะแสดงค่าเหล่านั้นโดยตรงแทนที่จะเป็นรายการโหนด

แกนที่ใช้บ่อยนอกเหนือจาก child

  • ancestor:: บรรพบุรุษทั้งหมด
  • following-sibling:: โหนดพี่น้องที่อยู่ถัดจากโหนดปัจจุบัน
  • preceding-sibling:: โหนดพี่น้องที่อยู่ก่อนหน้า
  • descendant:: โหนดลูกหลานทั้งหมด
  • attribute:: (ตัวย่อ @) แอตทริบิวต์ของโหนดปัจจุบัน
  • parent:: (ตัวย่อ ..) อิลิเมนต์พาเรนต์

ข้อควรรู้เกี่ยวกับ HTML

HTML ไม่ใช่ XML แบบเข้มงวด เครื่องมือจึงแยกวิเคราะห์อย่างผ่อนปรนด้วยพาร์เซอร์ HTML ของเบราว์เซอร์คุณแทนพาร์เซอร์ XML แบบเข้มงวด โหมด HTML จะถูกตรวจจับอัตโนมัติจาก <!DOCTYPE html> หรือรูต <html> และคุณบังคับเลือกโหมดใดโหมดหนึ่งได้จากตัวเลือกโหมดเอกสาร ในโหมด HTML ชื่อแท็กและชื่อแอตทริบิวต์จะถูกแปลงเป็นตัวพิมพ์เล็ก จึงควรเขียน XPath ด้วยตัวพิมพ์เล็ก: //div[@class] ไม่ใช่ //DIV[@CLASS]

เนมสเปซ

XML ที่มีเนมสเปซต้องลงทะเบียนพรีฟิกซ์ก่อน:

<rss xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <item>
    <content:encoded>...</content:encoded>
  </item>
</rss>

เครื่องมือจะสแกนเอกสารเพื่อหาการประกาศ xmlns แล้วลงทะเบียนทุกพรีฟิกซ์ให้อัตโนมัติ ดังนั้น //content:encoded จึงใช้ได้ทันที ส่วนเนมสเปซเริ่มต้น (xmlns="..." เปล่า ๆ) ไม่มีพรีฟิกซ์ในเอกสาร เครื่องมือจึงผูกไว้กับพรีฟิกซ์ d: เลือกอิลิเมนต์ <item> ในฟีดที่ใช้เนมสเปซเริ่มต้นด้วย //d:item เนมสเปซที่ลงทะเบียนแล้วจะแสดงอยู่ข้างผลลัพธ์

สิ่งที่เครื่องมือนี้ไม่ประเมิน

เบราว์เซอร์ประเมิน XPath 1.0 ซึ่งเป็นสำเนียงเดียวกับที่เครื่องมือ scraping ส่วนใหญ่ใช้ ฟีเจอร์ของ XPath 2.0 ขึ้นไป เช่น matches(string, regex), tokenize(string, delimiter), นิพจน์ for ... return และตัวดำเนินการซีเควนซ์ ไม่ได้เป็นส่วนหนึ่งของมัน คุณจะพบฟีเจอร์เหล่านี้ในชุดเครื่องมือ XSLT 2.0/3.0 XPath 1.0 ยังคงเป็นตัวเลือกที่พกพาได้กว้างที่สุดสำหรับ web scraping

เคล็ดลับการทดสอบ

  • เริ่มจากกว้างแล้วค่อยบีบให้แคบ เริ่มจาก //div ตามด้วย //div[@class] แล้วจึงระบุค่า class ที่ต้องการ
  • ตรวจการประกาศเนมสเปซ ปัญหา “ทำไม XPath ของฉันไม่คืนอะไรเลย” ส่วนใหญ่มาจากเนมสเปซ ให้ดูรายการเนมสเปซที่ลงทะเบียนแล้ว
  • ระวังตัวพิมพ์ใหญ่เล็ก XML แยกแยะตัวพิมพ์ใหญ่เล็ก ส่วนโหมด HTML จะแปลงชื่อเป็นตัวพิมพ์เล็ก
  • ลองใช้ string() เมื่อดึงข้อความ //p/text() กับ string(//p) ให้ผลต่างกันเมื่อมีมาร์กอัปซ้อนอยู่ข้างใน

คำถามที่พบบ่อย

ไม่ รองรับเฉพาะ XPath เบราว์เซอร์ส่วนใหญ่รองรับทั้งสองแบบผ่าน document.querySelectorAll (CSS) และ document.evaluate (XPath) เลือกใช้แบบที่ชัดเจนกว่าสำหรับงานนั้น

การแยกวิเคราะห์ HTML จะแปลงชื่อแท็กและแอตทริบิวต์เป็นตัวพิมพ์เล็ก ตรวจให้แน่ใจว่า XPath ของคุณใช้ตัวพิมพ์เล็ก: //div[@class] ไม่ใช่ //DIV[@CLASS] และอย่าลืมเช็กโหมดด้วย: การบังคับโหมด XML กับ HTML ที่หละหลวมจะล้มเหลวพร้อมข้อผิดพลาดการแยกวิเคราะห์ ขณะที่โหมด HTML จะแยกวิเคราะห์อย่างผ่อนปรน

พรีฟิกซ์ที่ประกาศในเอกสารจะถูกลงทะเบียนให้นิพจน์ของคุณอัตโนมัติ เนมสเปซเริ่มต้นจะถูกผูกกับพรีฟิกซ์ d ดังนั้น //d:item จะเลือกอิลิเมนต์ <item> ในเอกสารที่ใช้เนมสเปซเริ่มต้น การผูกที่ใช้งานอยู่จะแสดงพร้อมผลลัพธ์

ไม่ เอกสารและนิพจน์ถูกประเมินโดยเอนจิน XPath ของเบราว์เซอร์คุณเอง ไม่ถูกส่งไปยังเซิร์ฟเวอร์ของเรา ไม่ถูกจัดเก็บ และไม่ถูกเพิ่มเข้าไปในที่อยู่ของหน้า ทั้งสองอยู่แค่ในเซสชันของเบราว์เซอร์นี้เพื่อให้มุมมองแบบหลายขั้นตอนแสดงผลลัพธ์ของคุณได้

เครื่องมือที่เกี่ยวข้อง

ตารางอ้างอิง ASCII

ตาราง ASCII ครบตั้งแต่ 0 ถึง 127 พร้อมค่าเลขฐานสิบ ฐานสิบหก ฐานแปด ฐานสอง และรูปแบบการอ้างอิงอักขระแบบตัวเลขของ HTML รวม NUL, LF และ DEL

อ้างอิงตัวอักษร HTML

รายการที่สามารถค้นหาได้ขององค์ประกอบ HTML พร้อมรหัสชื่อและรหัสตัวเลข รวมถึงฟังก์ชันสำเนาด้วยคลิกเดียวสำหรับตัวอักษรพิเศษและสัญลักษณ์ต่างๆ

ตารางอ้างอิงแป้นพิมพ์ลัด

ค้นหาแป้นพิมพ์ลัดเริ่มต้นตามเอกสารของ VS Code, Chrome และ Bash ที่ใช้ GNU Readline บน macOS, Windows และ Linux

ตัวตรวจสอบอีเมล

ตรวจสอบที่อยู่อีเมล: ตรวจไวยากรณ์ RFC 5322 ค้นหา MX เรกคอร์ดแบบเรียลไทม์ พร้อมรายละเอียดส่วนท้องถิ่น โดเมน และความยาว ไม่มีการส่งอีเมลใด ๆ

ตัวตรวจสอบความถูกต้องของ JSON

ตรวจสอบไวยากรณ์ JSON และตรวจจับเครื่องหมายจุลภาคต่อท้าย เครื่องหมายอัญประกาศที่ผิด คีย์ซ้ำ และโครงสร้างที่ผิดรูปแบบ พร้อมระบุตำแหน่งข้อผิดพลาดอย่างแม่นยำ

ตัวลดรูปพีชคณิตบูลีน

ประเมินนิพจน์บูลีนสำหรับทุกชุดอินพุตและดูตารางค่าความจริงที่สมบูรณ์ รองรับตัวแปรสูงสุดห้าตัวและตัวดำเนินการ &, |, !, ^

เครื่องมือนี้มีให้บริการในภาษาอื่น