如何使用vb.net和linq读取和修改xml文件
我只能阅读和编辑第一个声明,但是我需要代码在所有声明中执行相同的操作。它必须计算每个索赔中的行数,并在每行中写一个行号。下面是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
<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现在是: