Tôi có một cấu trúc tương tự như sau:XPath: Chọn nút nhưng không phải yếu tố con cụ
<page id='1'>
<title>Page 1</title>
<page id='2'>
<title>Sub Page 1</title>
</page>
<page id='3'>
<title>Sub Page 2</title>
</page>
</page>
<page id='4'>
<title>Page 2</title>
</page>
tôi cần phải chọn một trang bằng cách Id nhưng nếu trang đó có các trang hậu duệ Tôi không muốn quay trở lại những yếu tố đó, nhưng tôi muốn các yếu tố khác của trang đó. Nếu tôi chọn Trang 1 Tôi muốn trả lại tiêu đề nhưng không phải là trang con ...
//page[@id=1]
Ở trên tôi được trang 1, nhưng làm cách nào để loại trừ các trang phụ? Ngoài ra, Có thể có bất kỳ số lượng phần tử tùy ý nào trong một trang.
//page[@id=1]/*[not(self::page)]
Tôi nhận thấy rằng điều này giúp tôi có được dữ liệu tôi muốn. Tuy nhiên, dữ liệu đó trở lại dưới dạng một mảng các đối tượng với một đối tượng trên mỗi phần tử và dường như loại trừ các tên phần tử ???. Tôi đang sử dụng PHP SimpleXML cho những gì nó có giá trị.
Tốt câu hỏi, 1. Xem câu trả lời của tôi cho một giải pháp ngắn và đơn giản. :) –
"Tuy nhiên, dữ liệu đó trở lại dưới dạng một mảng các đối tượng với một đối tượng trên mỗi phần tử". Làm thế nào là khác với những gì bạn muốn/cần? – LarsH
Dữ liệu trở lại theo một định dạng khác tùy thuộc vào truy vấn xpath, tôi nhận được một mảng SimpleXMLElement với một chuỗi duy nhất trong mỗi và thiếu các tên phần tử. Trường hợp đầu tiên trả về một đối tượng SimpleXMLElement đơn lẻ với tất cả các cặp giá trị khóa dự kiến. Tôi không hiểu tại sao, có lẽ tôi sẽ mở một câu hỏi khác. – Ben