Следующий XML представляет упрощенную версию более сложной структуры, с которой я работаю.Я хочу иметь возможность выбрать конкретное значение на основе некоторых метаданных.
<Root>
<Data>
<KeyValuePair>
<Key>Field1</Key>
<Value>Value1</Value>
</KeyValuePair>
<KeyValuePair>
<Key>Field2</Key>
<Value>Value2</Value>
</KeyValuePair>
<KeyValuePair>
<Key>Field3</Key>
<Value>Value3</Value>
</KeyValuePair>
</Data>
<Name>Customer</Name>
<ID>00000000-0000-0000-0000-000000000000</ID>
</Root>
Я хочу иметь возможность выбрать текст узла Value, где текст узла Key равен «Field2» и имениузел равен "Клиент".Мне также нужно сделать это достаточно гибким, чтобы не заботиться о пространствах имен.
Я смог выбрать узел на основе узла-брата, используя следующее:
//*[local-name()='Value'][../*[local-name()='Key'][./text() = 'Field2']]/text()
Но во время поискадал результаты о том, как выбрать дочерние узлы на основе родительских атрибутов, я не смог найти решение для моей конкретной дилеммы.
Я новичок в XPath, поэтому, возможно, я не ищу правильную вещь или не может быть решения для того, что я хочу.В любом случае, если бы кто-то мог указать мне правильное направление, это было бы очень ценно.
РЕДАКТИРОВАТЬ: Я перефразировал мой вопрос для ясности, предоставленный XML не совсем то, с чем я работаю, а упрощенное представление структуры.Я также видел комментарии о чувствительности к регистру и отредактировал мой код, чтобы более точно отразить данный пример.