XMLを結果セットと同じ形式に抽出する

XMLを結果セットと同じ形式に抽出する

xmlから値を抽出する必要がありますが、タグが欠落している状況が発生しました。詳しく説明すると、約5つの同じ要素を手動で計算しましたが、ある兄弟ノード(型)に他の型と同じ要素はありません。たとえば、次のxmlを参照してください。 (以前に使ったことがありますが、例として使ってみましょう。)

<?xml version="1.0"?>
<DTS:Executable xmlns:DTS="www.microsoft.com/SqlServer/Dts"
  DTS:refId="Package"
  DTS:CreationDate="7/22/2019 4:18:27 PM"
  DTS:CreationName="Microsoft.Package"
  DTS:CreatorComputerName="ADMIN-8DF005D47"
  DTS:CreatorName="ADMIN-8DF005D47\Administrator"
  DTS:DTSID="{8CCA1D42-642A-4932-AAEC-E02175A4B2DB}"
  DTS:ExecutableType="Microsoft.Package"
  DTS:LastModifiedProductVersion="15.0.2000.68"
  DTS:LocaleID="1033"
  DTS:ObjectName="HardestNestedWorkflow2"
  DTS:PackageType="5"
  DTS:VersionBuild="12"
  DTS:VersionGUID="{FDD9B190-1A03-4A19-8794-FA86F4F46A93}">
  <DTS:Property
    DTS:Name="PackageFormatVersion">8</DTS:Property>
  <DTS:ConnectionManagers>
    <DTS:ConnectionManager
      DTS:refId="Package.ConnectionManagers[ADMIN-8DF005D47.AdventureWorks]"
      DTS:CreationName="OLEDB"
      DTS:DTSID="{A32A68DF-3D53-4057-AF80-1B8D524F82BC}"
      DTS:ObjectName="ADMIN-8DF005D47.AdventureWorks">
      <DTS:ObjectData>
        <DTS:ConnectionManager
          DTS:ConnectionString="Data Source=ADMIN-8DF005D47;Initial Catalog=AdventureWorks;Provider=SQLNCLI11;Integrated Security=SSPI;Application Name=SSIS-HardestNestedWorkflow2-{A32A68DF-3D53-4057-AF80-1B8D524F82BC}ADMIN-8DF005D47.AdventureWorks;Auto Translate=False;" />
      </DTS:ObjectData>

    <!--snipped-->

    </DTS:ConnectionManager>
  </DTS:ConnectionManagers>
</DTS:Executable>

F(ビッグブラザー)そこには兄​​妹がいるんです。 (そのような要素を探しています)

xmllintそしてwithを使って抽出すると、存在するxpath兄弟だけが抽出されます。

XMLコードはおそらく悪い例かもしれませんが、これは私が達成したいフォーマットです。左の列は大きな兄弟ノード、右の列は兄弟ノードです。

DTS:CreationName="OLEDB"     {A32A68DF-3D53-4057-AF80-1B8D524F82BC}
DTS:CreationName="Excel"     {A32A68DF-3D53-4057-AF80-1B8D524F82BC}
DTS:CreationName="..."       <no value>
DTS:CreationName="blah blah" <no value>

xmllint xpathコードを書く方法はありますか?

  1. 上記の形式を作成しますか?データベース結果セットと同じです。
  2. awkieを使用して選択できるように、兄弟ノードと兄弟ノードの間に文字を追加します。DTS:CreationName="OLEDB"%{A32A68DF-3D53-4057-AF80-1B8D524F82BC}
  3. スペースを表示せず、NULL兄弟が存在しないことを思い出させる文字を入力してください。
  4. 兄弟ノードが2つ以上の場合は、同じ兄弟ノードを並べて配置します。

    兄弟1%兄弟姉妹1

    兄弟1%兄弟姉妹2

本当に役に立ちます。もっと学ぶことを楽しみにしていますxmllint

ベストアンサー1

おすすめ記事