繁体   English   中英

循环遍历特定的 XML 节点并更新 VB.NET

[英]Loop Through Specific XML Node and Update VB.NET

我有一些格式如下的 XML:

<PolicyInput>
  <Header>
    ....
  </Header>
  <Policies>
    <Policy>
      <PolicyRecordNumber>1</PolicyRecordNumber>
      <PCAdjustment>
        ....
      </PCAdjustment>
    </Policy>
    <Policy>
      <PolicyRecordNumber>1</PolicyRecordNumber>
      <PCAdjustment>
        ....
      </PCAdjustment>
    </Policy>
    <Policy>
      <PolicyRecordNumber>1</PolicyRecordNumber>
      <PCNewBusiness>
        ....
      </PCNewBusiness>
    </Policy>
  </Policies>
  <Trailer>    
    <PolicyRecordCount>1</PolicyRecordCount>
  </Trailer>
</PolicyInput>  

我希望遍历并更新For Each语句中的每个PolicyRecordNumber元素,然后使用最终的PolicyRecordNumber值更新最终的PolicyRecordCount元素。 所以,基本上,我将用12345更新每个PolicyRecordNumber ,然后5将是我的PolicyRecordCount最后。

我将如何使用 VB.NET 执行此操作,因为此时 XML 已在应用程序中形成。

使用 xelement 您可以单独迭代 PolicyRecordNumber。 这是一个测试。 第一部分展示了如何读取和/或使用 xelement 文字进行测试。 最后,代码显示了如何实现您的目标。

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    'Dim yourpath As String = Environment.GetFolderPath(Environment.SpecialFolder.Desktop)
    'yourpath = IO.Path.Combine(yourpath, "test.xml")

    Dim xe As XElement
    ' to load from a file
    'xe = XElement.Load(yourpath)
    ' for testing
    xe = <PolicyInput>
             <Header>
                 <!-- ... -->
             </Header>
             <Policies>
                 <Policy>
                     <PolicyRecordNumber>1</PolicyRecordNumber>
                     <PCAdjustment>
                         <!-- ... -->
                     </PCAdjustment>
                 </Policy>
                 <Policy>
                     <PolicyRecordNumber>1</PolicyRecordNumber>
                     <PCAdjustment>
                         <!-- ... -->
                     </PCAdjustment>
                 </Policy>
                 <Policy>
                     <PolicyRecordNumber>1</PolicyRecordNumber>
                     <PCNewBusiness>
                         <!-- ... -->
                     </PCNewBusiness>
                 </Policy>
             </Policies>
             <Trailer>
                 <PolicyRecordCount>1</PolicyRecordCount>
             </Trailer>
         </PolicyInput>

    Dim prn As Integer = 1
    For Each el As XElement In xe...<PolicyRecordNumber>
        el.Value = prn.ToString
        prn += 1
    Next
    prn -= 1
    xe.<Trailer>.<PolicyRecordCount>.Value = prn.ToString

    ' to save file
    ' xe.Save(yourpath)
End Sub

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM