2017-03-06 15 views
1

PowerShellスクリプトを使用して、同じXML属性形式の複数のXMLファイルをJSONファイルに変換したいとします。アイデアは、各項目がXMLファイルのJSON表現であるJSONリストを作成することです。それは可能ですか?入力と出力の例:複数のXMLをJSONリストに変換する

入力:

File1.xml

<File> 
<Child1> First xml child 1</Child1> 
<Child2>First xml child 2</Child2> 
</File> 

File2.xml

<File> 
<Child1> Second xml child 1</Child1> 
<Child2>Second xml child 2</Child2> 
</File> 

出力:

[ 
    { 
    File: [ 
     {Child1 : First xml child 1 }, 
     { Child2: First xml child 2} 
    ] 
    }, 
    { 
    File: [ 
     {Child1 : Second xml child 1 }, 
     { Child2: Second xml child 2} 
    ] 
    } 
] 
+3

*「それはできますか?」*確かです。しかし、SOは、他の人がコードを書く場所ではありません。これまでに何を試してみましたか(コードを表示してください)、そしてあなたのコード内のどのような特定の問題に助けが必要ですか? –

答えて

0

があなたを書きますこの

// To convert an XML node contained in string xml into a JSON string 
XmlDocument doc = new XmlDocument(); 
doc.LoadXml(xml); 
string jsonText = JsonConvert.SerializeXmlNode(doc); 
+0

または内蔵の 'JavaScriptSerializer'を使用して外部パッケージに依存しないようにするには、PowerShellでは手間がかかります – abatishchev

+0

非常に簡単です。なぜOPがC#タグを質問に追加したのか分かりませんが、質問テキストからはPowerShellスクリプトが必要なことは明らかです。だから、これをどのようにPowerShellスクリプトに変えるのですか?完全な型名は何ですか?また、すべての型がプリインストールされているか、依存関係をダウンロードする必要がありますか? – mklement0

1

の独自フォーマットのトップには、次のような、その後にJSONに変換することができます命じキーとネストされたハッシュテーブルへのあなたのサンプル文書としてだけの非常にシンプルなXML文書を変換するには、ConvertFrom-Xml、ヘルパー関数を使用していますConvertTo-Json:あなたのサンプルファイルと

# Helper function that converts a *simple* XML document to a nested hashtable 
# with ordered keys. 
function ConvertFrom-Xml { 
    param([parameter(Mandatory, ValueFromPipeline)] [System.Xml.XmlNode] $node) 
    process { 
    if ($node.DocumentElement) { $node = $node.DocumentElement } 
    $oht = [ordered] @{} 
    $name = $node.Name 
    if ($node.FirstChild -is [system.xml.xmltext]) { 
     $oht.$name = $node.FirstChild.InnerText 
    } else { 
     $oht.$name = New-Object System.Collections.ArrayList 
     foreach ($child in $node.ChildNodes) { 
     $null = $oht.$name.Add((ConvertFrom-Xml $child)) 
     } 
    } 
    $oht 
    } 
} 

[xml[]] (Get-Content -Raw file[12].xml) | ConvertFrom-Xml | ConvertTo-Json -Depth 3 

、この利回り:

[ 
    { 
     "File": [ 
        { 
         "Child1": " First xml child 1" 
        }, 
        { 
         "Child2": "First xml child 2" 
        } 
       ] 
    }, 
    { 
     "File": [ 
        { 
         "Child1": " Second xml child 1" 
        }, 
        { 
         "Child2": "Second xml child 2" 
        } 
       ] 
    } 
] 
関連する問題