powershell для синтаксического анализа json и объединения его в файл xml - PullRequest
0 голосов
/ 06 августа 2020

В PowerShell 5.0, как извлечь массив «результатов» динамического c JsonToExtract.json и однозначно добавить извлеченные значения, чтобы они были <members> под <name>TargetName</name> в существующем file.XML? Ниже приведены файловые структуры и то, чего я пытаюсь достичь. Заранее благодарим за помощь!

JsonToExtract. json

  {
      "status": 0,
      "result": [
        "car",
        "bike",
        "wheel",
        "door",
        "fish",
        "mountains"
      ]
    }

файл. xml (до слияния)

<?xml version="1.0" encoding="UTF-8"?>
<Package xmlns="http://*">
  <types>
    <name>Weather</name>
    <members>Cloudy</members>
  </types>
  <types>
    <name>TargetName</name>
    <members>car</members>
  </types>
  <version>48.0</version>
</Package>

файл. xml (Вот что я ожидаю)

<?xml version="1.0" encoding="UTF-8"?>
<Package xmlns="http://*">
  <types>
    <name>Weather</name>
    <members>Cloudy</members>
  </types>
  <types>
    <name>TargetName</name>
    <members>car</members>
    <members>bike</members>
    <members>wheel</members>
    <members>door</members>
    <members>fish</members>
    <members>mountains</members>
  </types>
<version>48.0</version>
</Package>

1 Ответ

1 голос
/ 06 августа 2020

Пример кода:

$file = [xml](Get-Content file.xml -Raw)
$json = Get-Content .\JsonToExtract.json -Raw | ConvertFrom-Json

$TargetNode = $file.Package.types | where { $_.name -eq 'TargetName' }
foreach ($j in $json.result)
{
        $e = $file.CreateElement(“members”,$file.Package.NamespaceURI)
        $e.set_InnerText($j)
        $TargetNode.AppendChild($e) > $null
}

$file.Save("$(Resolve-Path .)\fileOut.xml")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...