0

下面提到的是我的 XML 的一部分:

sVariableValue = "UniqueID02"


    <ParentNode>
            <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>

我想获取 Comment 部分下所有节点的详细信息,但选择哪个部分将由 (sVariableValue) 的值决定。在上面的示例中,作为“sVariableValue = UniqueID02”中的值,我想使用 XPathDocument 获取 CommentID = UniqueID02 的 Comment 部分下的所有标签及其值。

有人可以指导如何使用 VB.net 实现相同的目标吗?

4

2 回答 2

3

这是一种方法。

Private Sub ReadComment()
    Dim oDoc As XPathDocument
    Dim oNav As XPathNavigator
    Dim oComment As XPathNavigator
    Dim oChild As XPathNavigator
    Dim sVariableValue = "UniqueID02"

    Dim oElem As XElement = <ParentNode>
                                <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>



    Using oSr As New StringReader(oElem.ToString)
        oDoc = New XPathDocument(oSr)
        oNav = oDoc.CreateNavigator
        oComment = oNav.SelectSingleNode("child::ParentNode/Comment[CommentId='" & sVariableValue & "']")
        If Not oComment Is Nothing Then
            oChild = oComment.SelectSingleNode("child::CommentId")
            If Not oChild Is Nothing Then
                Debug.Print(oChild.Value)
            End If
            oChild = oComment.SelectSingleNode("child::CommentDesc")
            If Not oChild Is Nothing Then
                Debug.Print(oChild.Value)
            End If
            oChild = oComment.SelectSingleNode("child::CommentTypeCd")
            If Not oChild Is Nothing Then
                Debug.Print(oChild.Value)
            End If
            oChild = oComment.SelectSingleNode("child::CreatedDt")
            If Not oChild Is Nothing Then
                Debug.Print(oChild.Value)
            End If
            oChild = oComment.SelectSingleNode("child::CreatedByUserId")
            If Not oChild Is Nothing Then
                Debug.Print(oChild.Value)
            End If
            oChild = oComment.SelectSingleNode("child::GivenName")
            If Not oChild Is Nothing Then
                Debug.Print(oChild.Value)
            End If
            oChild = oComment.SelectSingleNode("child::Surname")
            If Not oChild Is Nothing Then
                Debug.Print(oChild.Value)
            End If

        End If

    End Using
End Sub
于 2014-02-28T15:11:52.097 回答
1

您可以尝试这种方式:

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

navigator = xpathDoc.CreateNavigator()
Dim result = navigator.Select(String.Format("//Comment[./CommentId='{0}'", sVariableValue))
于 2014-02-28T16:01:28.457 回答