2017-01-13 16 views
-1

は、私はこのようなフォーマットされたいくつかのXMLを持っている:特定のXMLノードをループし更新VB.NET

<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要素を更新し、その後で最終PolicyRecordCount要素を更新します最後のPolicyRecordNumber値。したがって、基本的には、それぞれPolicyRecordNumber1,2,3,4,5、次に5と更新して、最終的に私のPolicyRecordCountとなります。

この時点で、XMLは既にアプリケーション内で形成されているので、VB.NETでこれをどうすればできますか?

+0

XMLは「アプリケーション内で既に形成されている」と言います。あなたはまだそれが記憶に残っていると言っていますか、それとも既にディスクに書き込まれていますか?それでもメモリに残っている場合、どのようにロードされますか? 'String'として? 'XDocument'、' XmlDocument'などですか? –

+0

@StevenDoggart文字列ですが、明らかにXMLDocumentに完全に譲渡してFileに書き込むことができます。 – Lynchie

答えて

0

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 
関連する問題