วิธีการใช้ "ไม่" ใน xpath?


164

ฉันต้องการเขียนบางอย่างของการเรียงลำดับ:

//a[not contains(@id, 'xx')]

(หมายถึงลิงก์ทั้งหมดที่มีแอตทริบิวต์ 'id' ไม่มีสตริง 'xx')

ฉันไม่พบไวยากรณ์ที่ถูกต้อง

คำตอบ:


241

ไม่ () เป็นฟังก์ชันใน xpath (ตรงข้ามกับตัวดำเนินการ) ดังนั้น

//a[not(contains(@id, 'xx'))]

มีวิธีที่จะพูดว่าคว้าแท็ก <p> ทั้งหมด แต่ไม่ใช่แท็ก <a> ภายในแท็กเหล่านั้นหรือไม่ ลองนึกภาพบางอย่างเช่น <p> ข้อความตัวอักษร <a class="x"> TEXT </a> ข้อความตัวอักษร </p> ฉันต้องการข้อความทั้งหมดใน p แต่ไม่ใช่ TEXT ใน เป็นไปได้กับ XPath? นี่ไม่ใช่กรณีของฉันมันมีความซับซ้อนมากกว่านั้นเล็กน้อย แต่ก็มากหรือน้อยเหมือนกัน
Ali


13

ไม่มีคำตอบเหล่านี้สำหรับฉันสำหรับงูหลาม ฉันแก้ไขโดยสิ่งนี้

a[not(@id='XX')]

นอกจากนี้คุณสามารถใช้หรือเงื่อนไขใน xpath ของคุณโดย|ผู้ประกอบการ เช่น

a[not(@id='XX')]|a[not(@class='YY')]

บางครั้งเราต้องการองค์ประกอบที่ไม่มีชั้นเรียน ดังนั้นคุณสามารถทำเช่นนั้น

a[not(@class)]

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.