Это на самом деле дубликат этого вопроса. Хотя он не помечен как ответ, метод мой ответ на этот вопрос является единственным способом однозначно сформулировать XPath для узла в документе XML, который всегда будет работать при любых обстоятельствах. (Он также работает для всех типов узлов, а не только для элементов.)
Как видите, XPath, который он производит, выглядит ужасно и абстрактно. но это обращается к проблемам, которые много респондентов подняли здесь. Большинство предложений, представленных здесь, создают XPath, который при использовании для поиска в исходном документе создаст набор из одного или нескольких узлов, который включает целевой узел. Проблема в том, что «или больше». Например, если у меня есть XML-представление DataSet, наивный XPath для конкретного элемента DataRow /DataSet1/DataTable1
также возвращает элементы всех других DataRow в DataTable. Вы не можете устранить это неоднозначно, не зная кое-что о том, как XML представлен на форуме (например, есть ли элемент первичного ключа?).
Но /node()[1]/node()[4]/node()[11]
, есть только один узел, который он когда-либо вернет, несмотря ни на что.