ホーム>source

このようなXMLファイルがあります。

<前>ウィズウィズ

最初のケースでは、すべての "Level"の内部テキストを更新しますが、要素StudentID code = "100"のみを更新します。できますか?

2番目のケースでは、要素「Year」の内部テキストが「2019」に等しい場合、すべての内部テキスト要素「Level」を更新します。それは可能ですか?

誰でも私にアイデアをください。ありがとうございました

?xml version="1.0" encoding="utf-8"?> <StudentList> <Class> <StudentID code="200" description="EDF"> <SID8594> <RegID>8594</RegID> <Year>2019</Year> <MAJOR> <Level>2.13</Level> </MAJOR> <SUBMAJOR> <Level>2.13</Level> </SUBMAJOR> </SID8594> <SID8593> <RegID>8593</RegID> <Year>2019</Year> <MAJOR> <Level>2.13</Level> </MAJOR> <SUBMAJOR> <Level>2.13</Level> </SUBMAJOR> </SID8593> <SID8595> <RegID>8595</RegID> <Year>2020</Year> <MAJOR> <Level>2.20</Level> </MAJOR> <SUBMAJOR> <Level>2.20</Level> </SUBMAJOR> </SID8595> <StudentID code="100" description="ABC"> <SID85AA> <RegID>85AA</RegID> <Year>2019</Year> <SUBMAJOR> <Level>2.13</Level> </SUBMAJOR> </SID85AA> </Class> <StudentList>
あなたの答え
  • 解決した方法 # 1

    年のみで検索

    経由でxmlドキュメントを読み取り、必要な要素を更新できます。

    <前>ウィズウィズ

    StudentIDと年で検索

    特定の学生IDを指定する場合は、これを使用して検索できます。

    <前>ウィズウィズ [xml]$studentList = Get-Content C:\temp\xml.txt $Nodes2019 = $studentList.StudentList.Class.StudentID.ChildNodes | ? {$_.Year -eq 2019 } # Change the values of all the elements $Nodes2019 | ? {$_.MAJOR } | % { $_.MAJOR.LEVEL = "NewValue" } # Save changes to new file once done. $studentList.Save("C:\temp\newxml.txt")

関連記事

  • 前へ java - JPAクエリ:サブクエリをグループ化条件に結合する
  • 次へ java - Androidで内部ストレージファイルの読み取りに時間がかかりすぎる