簡體   English   中英

將 xml 中的節點從數組轉換為列表 Powershell

[英]Convert nodes in xml from array to list Powershell

我試圖將一個 xml 文件的節點顯示到一個表中,我的問題是每列顯示為一個數組而不是列表。 我不確定如何將節點轉換為列表..

我的結果應該是:

CCI, Description
CCI-000001, BLAH BLAH BLAH BLAH BLAH BLAH
CCI-000002, BLAH BLAH BLAH BLAH BLAH BLAH 
CCI-003391, BLAH BLAH BLAH BLAH BLAH BLAH 

取而代之的是:

CCI                                          Description        
{CCI-000001, CCI-000002, CCI-003391}         {BLAH BLAH BLAH BLAH BLAH ...}

我的 xml 文件是

<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type='text/xsl' href='cci2html.xsl'?>
<cci_list xmlns="http://iase.disa.mil/cci">
 <metadata>
  <version>2013-10-08</version>
  <publishdate>2013-10-08</publishdate>
 </metadata>
 <cci_items>
  <cci_item id="CCI-000001">
   <status>draft</status>
   <publishdate>2013-01-01</publishdate>
   <contributor>DISA FSO</contributor>
   <definition>BLAH BLAH BLAH BLAH BLAH BLAH</definition>
  <type>policy</type>
  <references>
    <reference creator="NIST" title="NIST SP 800-53" version="3" location="NIST" index="AC-1 a" />
    <reference creator="NIST" title="NIST SP 800-53A" version="1" location="NIST" index="AC-1.1 (i&amp;ii)" />
    <reference creator="NIST" title="NIST SP 800-53 Revision 4" version="4" location="NIST" index="AC-1 a 1" />
  </references>
</cci_item>
<cci_item id="CCI-000002">
  <status>draft</status>
  <publishdate>2013-01-01</publishdate>
  <contributor>DISA FSO</contributor>
  <definition>BLAH BLAH BLAH BLAH BLAH </definition>
  <type>policy</type>
  <references>
    <reference creator="NIST" title="NIST SP 800-53" version="3" location="NIST" index="AC-1 a" />
    <reference creator="NIST" title="NIST SP 800-53A" version="1" location="NIST" index="AC-1.1 (iii)" />
    <reference creator="NIST" title="NIST SP 800-53 Revision 4" version="4" location="NIST" index="AC-1 a 1" />
  </references>
</cci_item>
<cci_item id="CCI-003391">
  <status>draft</status>
  <publishdate>2013-01-01</publishdate>
  <contributor>DISA FSO</contributor>
  <definition>BLAH BLAH BLAH BLAH BLAH BLAH</definition>
  <type>policy</type>
  <references>
    <reference creator="NIST" title="NIST SP 800-53 Revision 4" version="4" location="NIST" index="SA-19 (3)" />
  </references>
</cci_item>
</cci_items>
</cci_list>

我的代碼是

[xml]$data = GC "file.xml"

$CCInum = $data.cci_list.cci_items.cci_item.id
$CCIdescription = $data.cci_list.cci_items.cci_item.definition

$CCItable = New-Object PSobject -Property @{
    CCI = $CCInum
    Description = $CCIdescription
    }

$CCItable | select CCI, Description

我這樣做是因為我最終會將結果導出到 csv 文件。

目前您正在創建兩個單獨的數組。 相反,從 xml 中提取一個數組,以便每個元素都有兩個字段,然后通過Select-Object它們提取為屬性:

$xml = [xml](gc 'file.xml')
$table = $xml.cci_list.cci_items.cci_item |
         Select @{N='CCI'; E={$_.id}}, @{N='Description'; E={$_.definition}} 
$table | Export-Csv file.csv -NoTypeInformation

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM