موضوع XML DOM XPathResult

نتیجه جستجوی XPath

شیء XPathResult

شیء XPathResult نمایانگر مقدار یک عبارت XPath است. این نوع شیء توسط Document.evaluate() و XPathExpression.evaluate() بازگشت. جستجوی XPath می‌تواند به عنوان رشته، عدد، مقدار بولین، گره و لیست گره محاسبه شود. پیاده‌سازی XPath می‌تواند به چندین روش مختلف لیست گره‌ها را بازگرداند، بنابراین، این شیء برای دریافت نتیجه واقعی یک جستجوی XPath پیچیده‌تری را تعریف کرده است.

برای استفاده از XPathResult، ابتدا ویژگی resultType را بررسی کنید. این ویژگی یک مقادیر XPathResult را ذخیره می‌کند. مقدار این ویژگی به شما می‌گوید که باید از چه ویژگی‌ها و روش‌هایی برای تعیین مقدار نتیجه استفاده کنید. فراخوانی روش‌هایی که برای resultType فعلی تعریف نشده‌اند یا خواندن ویژگی‌هایی که برای آن تعریف نشده‌اند منجر به خطا می‌شود.

IE از API XPathResult پشتیبانی نمی‌کند. برای اجرای جستجو XPath در IE، به Node.selectNodes() و Node.selectSingleNode() .

مقادیر ثابت شیء XPathResult

این مقادیر تعریف‌کننده نوعی است که یک جستجو XPath ممکن است برمی‌گرداند. ویژگی resultType شیء XPathResult یکی از این مقادیر را ذخیره می‌کند و برای مشخص کردن نوعی که شیء نتیجه نگه می‌دارد استفاده می‌شود. این مقادیر با Document.evaluate() و XPathExpression.evaluate() استفاده می‌شوند تا نوع نتیجه مورد انتظار مشخص شود.

این مقادیر و معانی آنها به شرح زیر است:

ANY_TYPE
این مقدار را به Document.evaluate() یا XPathExpression.evaluate() ارسال کنید تا نوع نتیجه مورد انتظار مشخص شود. ویژگی resultType این مقدار را تنظیم نمی‌کند.
NUMBER_TYPE
numbervalue نتیجه را ذخیره می‌کند.
STRING_TYPE
stringvalue نتیجه را ذخیره می‌کند.
BOOLEAN_TYPE
booleanValue نتیجه را ذخیره می‌کند.
UNORDERED_NODE_ITERATOR_TYPE
این نتیجه یک مجموعه نقاط بدون ترتیب است که می‌توان به ترتیب به آنها دسترسی داشت. در طول این فرآیند، مستند نباید تغییر کند.
ORDERED_NODE_ITERATOR_TYPE
نتیجه یک لیست از نقاط است که بر اساس ویژگی‌های مستند مرتب شده‌اند و می‌توان به ترتیب به آنها دسترسی داشت. در طول این فرآیند، مستند نباید تغییر کند.
UNORDERED_NODE_SNAPSHOT_TYPE
نتیجه یک لیست دسترسی تصادفی از نقاط است. ویژگی snapshotLength طول لیست را مشخص می‌کند و روش snapshotItem() نقاطی با نشانی مشخص را برمی‌گرداند. نقاط ممکن است با ترتیب ظاهر شدنشان در مستند متفاوت باشند. چون این نتیجه یک
ORDERED_NODE_SNAPSHOT_TYPE
این نتایج یک لیست قابل دسترسی تصادفی از گره‌ها است، مانند UNORDERED_NODE_SNAPSHOT_TYPE، اما این لیست بر اساس ترتیب مستند قرار دارد.
ANY_UNORDERED_NODE_TYPE
ویژگی singleNodeValue به گره‌ای که با جستجو همخوانی دارد اشاره دارد، اگر هیچ گره‌ای با جستجو همخوانی ندارد، مقدار null دارد. اگر چندین گره با جستجو همخوانی دارند، singleNodeValue ممکن است هر یک از گره‌های همخوان باشد.
FIRST_ORDERED_NODE_TYPE
singleNodeValue گره اول مستند را که با جستجو همخوانی دارد را ذخیره می‌کند، اگر هیچ گره‌ای با جستجو همخوانی ندارد، مقدار null دارد.

ویژگی‌های نمونه XPathResult

بسیاری از ویژگی‌ها در اینجا تنها زمانی معتبر هستند که resultType مقدار خاصی را نگه دارد. دسترسی به ویژگی‌هایی که برای resultType فعلی تعریف نشده‌اند باعث بروز خطا می‌شود.

booleanValue
وقتی resultType برابر BOOLEAN_TYPE باشد، مقدار نتایج را ذخیره کنید.
invalidIteratorState
اگر resultType یکی از مقادیر ITERATOR_TYPE باشد و مستند تغییر کرده باشد، مقدار true دارد؛ این باعث می‌شود که تکرار به‌روز نشود، زیرا نتایج بازگردانده شده‌اند.
numberValue
وقتی resultType برابر NUMBER_TYPE باشد، مقدار نتایج را ذخیره کنید.
resultType
با استفاده از XPath، چه نوع نتایجی بازگردانده می‌شود را مشخص کنید. این مقدار یکی از مقادیر زیر است. مقدار این ویژگی به شما می‌گوید که می‌توانید از چه ویژگی‌ها و روش‌های دیگر استفاده کنید.
singleNodeValue
وقتی resultType برابر XPathResult.ANY_UNORDERED_NODE_TYPE یا XPathResult.FIRST_UNORDERED_NODE_TYPE باشد، مقدار نتایج را ذخیره کنید.
snapshotLength
وقتی resultType برابر UNORDERED_NODE_SNAPSHOT_TYPE یا ORDERED_NODE_ITERATOR_TYPE باشد، تعداد گره‌هایی که باید بازگردانده شوند را مشخص کنید. این ویژگی با snapshotItem() به کار می‌رود.
stringValue
وقتی که resultType STRING_TYPE باشد، مقدار نتایج ذخیره می‌شود.

روش‌های موضوع XPathResult

روش توضیحات
iterateNext() اگر resultType UNORDERED_NODE_ITERATOR_TYPE یا ORDERED_NODE_ITERATOR_TYPE باشد، از این روش استفاده کنید.
snapshotItem() این روش برای نودهای لیست نتایج درخواست شده در مقیاس مشخص شده استفاده می‌شود. این روش فقط در صورت اینکه resultType UNORDERED_NODE_SNAPSHOT_TYPE یا ORDERED_NODE_SNAPSHOT_TYPE باشد قابل استفاده است. این روش با snapshotLength استفاده می‌شود.

صفحات مرتبط

Document.evaluate() و XPathExpression.evaluate()