Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/14.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.net和linq读取和修改xml文件_Xml_Vb.net_Linq - Fatal编程技术网

如何使用vb.net和linq读取和修改xml文件

如何使用vb.net和linq读取和修改xml文件,xml,vb.net,linq,Xml,Vb.net,Linq,我只能阅读和编辑第一个声明,但是我需要代码在所有声明中执行相同的操作。它必须计算每个索赔中的行数,并在每行中写一个行号。下面是xml文件 <ClaimBatch> <Claims> <Claim> <claimGross>4947.7200</claimGross> <numLines>2</numLines> <Line> <li

我只能阅读和编辑第一个声明,但是我需要代码在所有声明中执行相同的操作。它必须计算每个索赔中的行数,并在每行中写一个行号。下面是xml文件

<ClaimBatch>
  <Claims>
    <Claim>
      <claimGross>4947.7200</claimGross>
      <numLines>2</numLines>
      <Line>
        <lineNo>1</lineNo>
        <benefitAmount>2473.8600</benefitAmount>
        <levy>247.3860</levy>
      </Line>
      <Line>
        <lineNo>2</lineNo>
        <benefitAmount>2473.8600</benefitAmount>
        <levy>247.3860</levy>
      </Line>
    </Claim>
    <Claim>
      <claimGross>549.6800</claimGross>
      <numLines>2</numLines>
      <Line>
        <benefitAmount>274.8400</benefitAmount>
        <levy>48.0976</levy>
      </Line>
      <Line>
        <benefitAmount>274.8400</benefitAmount>
        <levy>48.0976</levy>
      </Line>
    </Claim>
  </Claims>
</ClaimBatch>
下面是我到目前为止使用的代码

Public Sub writeLineNo()

Dim counter As Integer = 1
    Dim reader As XmlReader = XmlReader.Create("C:\SQLQUERIS\" & cmbschemetxt & " " & dateStr & ".xml")
    xmlDoc = XDocument.Load("C:\SQLQUERIS\" & cmbschemetxt & " " & dateStr & ".xml")

    For Each line In xmlDoc.<ClaimBatch>.<Claims>.<Claim>.<Line>
        If reader.ReadToFollowing("Line") Then
            reader.MoveToContent()
            While reader.ReadToNextSibling("Line")
                line.AddFirst(<lineNo><%= counter %></lineNo>)
                counter += 1
            End While
        End If
    Next
    reader.Close()
    xmlDoc.Save("C:\SQLQUERIS\" & cmbschemetxt & " " & dateStr & ".xml")
End Sub
每个循环只需使用两个。一个在每个上面循环,一个在每个里面循环

给定以下XML

Dim xml = <ClaimBatch>
            <Claims>
                <Claim>
                    <claimGross>4947.7200</claimGross>
                    <numLines>2</numLines>
                    <Line>
                        <benefitAmount>2473.8600</benefitAmount>
                        <levy>247.3860</levy>
                    </Line>
                    <Line>
                        <benefitAmount>2473.8600</benefitAmount>
                        <levy>247.3860</levy>
                    </Line>
                </Claim>
                <Claim>
                    <claimGross>549.6800</claimGross>
                    <numLines>2</numLines>
                    <Line>
                        <benefitAmount>274.8400</benefitAmount>
                        <levy>48.0976</levy>
                    </Line>
                    <Line>
                        <benefitAmount>274.8400</benefitAmount>
                        <levy>48.0976</levy>
                    </Line>
                </Claim>
            </Claims>
            </ClaimBatch>
使用嵌套循环,如:

For Each claim in xml.<Claims>.<Claim>
    Dim counter = 1
    For Each line in claim.<Line>
        line.AddFirst(<lineNo><%= counter %></lineNo>)
        counter += 1
    Next
Next 
xml现在是: