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>

에프(빅 브라더) 거기엔 남매가 있을 거예요. (그런 요소들을 찾고 있어요)

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!

관련 정보