Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在vb中用XML检索值_Xml_Vb.net_Parsing - Fatal编程技术网

在vb中用XML检索值

在vb中用XML检索值,xml,vb.net,parsing,Xml,Vb.net,Parsing,我正在寻找一种更有效的方法,使用VB在下面的XML中从@agesex检索“F” 以下是XML结构的简化版本: <GridRow XMLVersion="1.0" ColumnNames="Description|Notes|Detail Question|Detail Question Id"> <Row> > ... </Row> > ... <Row>

我正在寻找一种更有效的方法,使用VB在下面的XML中从@agesex检索“F”

以下是XML结构的简化版本:

    <GridRow XMLVersion="1.0" ColumnNames="Description|Notes|Detail Question|Detail Question Id">
        <Row>


> ...

        </Row>


> ...

        <Row>
            <NodeLevel>0</NodeLevel>
            <RowData>Cancer|@agesex=F;;|Cancer - Female|2320</RowData>
            <RowStyle>|||</RowStyle>
        </Row>
    </Gridrow>
使用:

Imports System.Xml
导入System.Text.RegularExpressions
Dim d作为新的XML文档
d、 加载(“file.xml”)
' ... 在此特定情况下(或/GridRow/Row/RowData,如果您希望特定)
' ... 将选择文档中至少1级深度的所有RowData节点。
Dim_rowNodes作为XmlNodeList=d.SelectNodes(“.//RowData”)
对于每个_rowNode,作为_rowNodes中的XmlNode
如果新的正则表达式(@agesex=。”,RegexOptions.None).Match(s).ToString.endswith(“F”),那么
' ... 剂量
如果结束
下一个
' ... 仅举个例子
Dim_rowNodes为XmlNodeList=d.SelectNodes(“//GridRow”)
对于每个_rowNode,作为_rowNodes中的XmlNode
' ... 在每个网格行上迭代
对于每个_childNode作为_rowNode中的XmlNode
' ... 迭代每行
对于每个_itemNode,作为_childNode中的XmlNode
' ... 迭代行中的每个项
将a设置为字符串=_itemNode.InnerText.Trim
下一个
' ... 或者直接获取节点
Dim b As String=\u childNode.SelectSingleNode(“RowData”).InnerText.Trim
' ... 要指定属性(假设为虚构性别),请执行以下操作:
尺寸g为字符串=“女性”
Dim c作为XmlNodeList=_childNode.SelectNodes(“RowData[@gender='”&g&“]”)
' ... 同样根据文档,您可以匹配值(包含在.InnerText属性中的数据)
Dim e As String=“myValue”
Dim f作为XmlNodeList=_childNode.SelectNodes(“RowData[.='”&e&“']”)
下一个
下一个
示例:

正如本文档所述,用于查询的lang/符号是:如果您知道要查找的数据,它支持更具选择性的查询

此外,
XML属性
定义如下:

如果性别是一种财产,则会容易得多,如上例所示,即:


Dim g=“F”:d.SelectNodes(“.//RowData[@gender=”&g&“]”)
;p

您是否能够获取?是的,我们正在使用for-each循环(item.InnerText.Contains(@agesex))来检索。请告诉我们是否有一种使用LINQ或XMLDocument的简单方法。另外,使用indexOf()是不够的,因为@agesex之前的文本可能会有所不同。在本例中,它是“癌症”,但可能是不同的值(即“肝脏问题”)。谢谢。您的示例帮助我们更好地理解SelectSingleNoe()。@MTL323好的,我想这终于解决了。基本涵盖了所有问题。如果您有任何问题,请提问。
xmlDoc.LoadXml(topProblemListTemplate.TemplateXml)
            nodeList = xmlDoc.SelectNodes("/GridRow")

            For Each row As XmlNode In nodeList
                For Each item As XmlNode In row.ChildNodes
                    If item.InnerText.Contains("@agesex") Then
                        Dim index As Integer = item.InnerText.IndexOf("@agesex=") + Len("@agesex=")

                        If index > 0 Then
                            Dim value As String = item.InnerText.Substring(index, 1)
                        End If
                    End If
                Next
            Next