Выберите узел XML на основе узла-брата - PullRequest
0 голосов
/ 27 сентября 2019

Я пытаюсь выбрать узел XML, где другой дочерний узел родительского узла содержит определенное значение.

XML выглядит следующим образом:

<?xml version="1.0" encoding="UTF-8" ?>
<AuthorIT>
    <Objects>
        <Media>don't care</Media>
        <Style>don't care</Style>
        <Book>don't care</Book>
        <Topic>don't care</Topic>
        <Topic>
            <Object>
                <Description>Performance Evidence</Description>
            </Object>
            <Text>This is what I want to select</Text>
        </Topic>
    </Objects>
</AuthorIT>

Я используюXPath в C #.Мой запрос на данный момент выглядит так: (но не работает, очевидно)

docNav = new XPathDocument(localFile);
nav = docNav.CreateNavigator();
xPath = "//Topic[Object/Description = 'Performance Evidence']/Text";
string value = nav.SelectSingleNode(xPath).Value;

Как мне получить содержимое узла Text из темы, у которой значение Object / Description равно "Свидетельство эффективности "?

Ответы [ 2 ]

1 голос
/ 27 сентября 2019

Сначала необходимо выбрать узел Description, содержащий текст стрелки, а затем вернуться к общему родителю и выбрать узлы Text, являющиеся его дочерними элементами.

//Topic/Object/Description[text()='Performance Evidence']/../../Text/text()
0 голосов
/ 30 сентября 2019

Как сказал Кирилл Полищук , мой XPath был верным.

То, что я исключил из примера XML, было ключом к решению ... Пространство имен!

Я нашел ответ на этот другой вопрос: Использование Xpath с пространством имен по умолчанию в C #

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...