निम्नलिखित XML होने:
<node>Text1<subnode/>text2</node>
मैं XPath के माध्यम से या तो पहले या दूसरे पाठ नोड का चयन कैसे करूं?
कुछ इस तरह:
/node/text()[2]
बेशक यह काम नहीं करता क्योंकि यह नोड के अंदर हर पाठ का विलय परिणाम है।
निम्नलिखित XML होने:
<node>Text1<subnode/>text2</node>
मैं XPath के माध्यम से या तो पहले या दूसरे पाठ नोड का चयन कैसे करूं?
कुछ इस तरह:
/node/text()[2]
बेशक यह काम नहीं करता क्योंकि यह नोड के अंदर हर पाठ का विलय परिणाम है।
जवाबों:
निम्नलिखित XML होने:
<node>Text1<subnode/>text2</node>
मैं XPath के माध्यम से या तो पहले या दूसरे पाठ नोड का चयन कैसे करूं?
उपयोग करें :
/node/text()
यह XML दस्तावेज़ के शीर्ष तत्व (नाम "नोड") के सभी पाठ-नोड बच्चों का चयन करता है।
/node/text()[1]
यह XML दस्तावेज़ के शीर्ष तत्व (नाम "नोड") के पहले पाठ-नोड बच्चे का चयन करता है।
/node/text()[2]
यह XML दस्तावेज़ के शीर्ष तत्व (नाम "नोड") के दूसरे पाठ-नोड बच्चे का चयन करता है।
/node/text()[someInteger]
यह XML दस्तावेज़ के शीर्ष तत्व (नाम "नोड") के कुछInteger-th पाठ-नोड बच्चे का चयन करता है। यह निम्नलिखित XPath अभिव्यक्ति के बराबर है:
/node/text()[position() = someInteger]
/node[2]
यदि स्रोत XML दस्तावेज़ अच्छी तरह से बना है, तो किसी भी नोड का चयन नहीं करना चाहिए। भी रूप में जाना जाता है - एक अच्छी तरह से गठित XML दस्तावेज में परिभाषा के अनुसार केवल एक (एकल) शीर्ष तत्व हैdocument-element
//*[text()]
वैसे भी उपयोग करना । /html/text()
काम नहीं करता।
/html/text()
दस्तावेज़ में सभी पाठ नोड्स का चयन नहीं करता है - केवल पाठ नोड्स जो शीर्ष ( html
तत्व ) के बच्चे (वंशज नहीं) हैं । आप शायद चाहते हैं /html//text()
। XPath अभिव्यक्तियों के निर्माण के लिए XPath के कुछ ज्ञान और समझ की आवश्यकता होती है।
आपका xpath काम करना चाहिए। मैंने MarkLogic और Zorba Xquery / Xpath कार्यान्वयन में आपकी xpath और खान का परीक्षण किया है।
दोनों को काम करना चाहिए।
/node/child::text()[1] - should return Text1
/node/child::text()[2] - should return text2
/node/text()[1] - should return Text1
/node/text()[2] - should return text2
/node/text()[2]
[...] काम नहीं करता क्योंकि यह नोड के अंदर हर पाठ का विलय परिणाम है जो गलत है: इसका मतलब हैnode
मूल तत्व का दूसरा पाठ नोड बच्चा । स्ट्रिंग मान (वंशज पाठ नोड्स के संयोजन) होगाstring(/node)