Как искать теги XML на основе идентификатора с помощью XPathDocument?

Ниже упоминается часть моего XML:

<ParentNode>
    <NewCommentID>UniqueID02</NewCommentID>
    <Comment>
        <CommentId>UniqueID01</CommentId> 
        <CommentDesc>Some comments</CommentDesc> 
        <CommentTypeCd>Code1</CommentTypeCd> 
        <CreatedDt>2013-11-29</CreatedDt> 
        <CreatedByUserId>user01</CreatedByUserId> 
        <GivenName>Mitchell</GivenName> 
        <Surname>Johnson</Surname> 
    </Comment>
    <Comment>
        <CommentId>UniqueID02</CommentId> 
        <CommentDesc>Some Comments....</CommentDesc> 
        <CommentTypeCd>Code2</CommentTypeCd> 
        <CreatedDt>2013-11-29</CreatedDt> 
        <CreatedByUserId>user02</CreatedByUserId> 
        <GivenName>Mike</GivenName> 
        <Surname>Jobs</Surname> 
    </Comment>
</ParentNode>

Я хочу получить подробную информацию обо всех узлах в разделе «Комментарии», но выбор раздела будет решаться узлом (NewCommentID). В приведенном выше примере в качестве значения в «NewCommentID = UniqueID02» я хочу получить все теги и их значения в разделе комментариев, где CommentID = UniqueID02, используя XPathDocument.

Может ли кто-нибудь подсказать, как добиться того же с помощью VB.net?


person user3363495    schedule 28.02.2014    source источник


Ответы (1)


Вы можете попробовать так:

Dim xpathDoc As New XPathDocument("Path_to_xml_file.xml")
Dim navigator As XPathNavigator

navigator = xpathDoc.CreateNavigator()
Dim result = navigator.Select("//Comment[./CommentId=../NewCommentID]")
person har07    schedule 28.02.2014
comment
Спасибо за ответ, это сработало ... однако я хотел бы задать еще один вопрос, который ... что, если у меня нет тега NewCommentID в XML и есть это значение в какой-то другой переменной, кроме XML, возможно ли это для достижения вышеуказанного сценария? - person user3363495; 28.02.2014
comment
просто замените ../NewCommentID в XPath значением вашей переменной нет? Если это не то, что вы имели в виду, подумайте о том, чтобы опубликовать новый вопрос, подробнее об этой новой проблеме. В идеале должен быть один конкретный вопрос в одном сообщении (по многим причинам, например, чтобы сделать его более управляемым, чтобы будущий посетитель не запутался, пытаясь понять, какая проблема здесь решается) . - person har07; 28.02.2014
comment
Большое спасибо за ваше предложение :) - person user3363495; 28.02.2014