提取 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. awk在兄弟节点和兄弟节点之间添加一个额外的字符,这样我就可以使用ie来拾取它DTS:CreationName="OLEDB"%{A32A68DF-3D53-4057-AF80-1B8D524F82BC}
  3. 不要显示空白,只需输入NULL或任何会提醒我兄弟姐妹不存在的字符
  4. 如果有超过 1 个兄弟节点,则将相同的兄弟节点并排放置。

    哥哥1%兄弟姐妹1

    哥哥1%兄弟姐妹2

这确实有帮助。期待学习更多的xmllint

相关内容