Как получить объединение Value от xml по PowerShell? - PullRequest
0 голосов
/ 30 января 2020

У меня есть данные. xml со следующими

<?xml version="1.0" encoding="UTF-8"?>
<animetitles>
    <anime aid="1">
        <title type="short" xml:lang="en">CotS</title>
        <title xml:lang="fr" type="official">Crest of the Stars</title>
        <title type="official" xml:lang="en">Crest of the Stars</title>
        <title xml:lang="pl" type="official">Crest of the Stars</title>
        <title type="syn" xml:lang="cs">Hvězdný erb</title>
        <title type="main" xml:lang="x-jat">Seikai no Monshou</title>
        <title xml:lang="x-jat" type="short">SnM</title>
        <title type="syn" xml:lang="ko">성계의 문장</title>
        <title type="official" xml:lang="ja">星界の紋章</title>
        <title xml:lang="zh-Hans" type="syn">星界之纹章</title>
    </anime>
    <anime aid="2">
        <title type="official" xml:lang="ja">3×3 EYES</title>
        <title type="short" xml:lang="x-jat">3x3</title>
        <title type="official" xml:lang="de">3x3 Augen (OVA 1)</title>
        <title type="main" xml:lang="x-jat">3x3 Eyes</title>
        <title type="official" xml:lang="en">3x3 Eyes</title>
        <title type="official" xml:lang="fr">3x3 Eyes</title>
        <title xml:lang="en" type="syn">3x3 Eyes - Immortals</title>
        <title xml:lang="it" type="official">3x3 Occhi</title>
        <title xml:lang="cs" type="official">3x3 Oči</title>
        <title xml:lang="sv" type="official">3x3 Ögon</title>
        <title type="official" xml:lang="es">3x3 Ojos [1-4]</title>
        <title type="official" xml:lang="ca">3x3 Ulls</title>
        <title xml:lang="ru" type="syn">3x3 глаза</title>
        <title type="syn" xml:lang="x-jat">Sazan Eyes</title>
        <title type="syn" xml:lang="x-jat">Southern Eyes</title>
        <title type="syn" xml:lang="ja">サザンアイズ</title>
        <title xml:lang="zh-x-nan" type="syn">三隻眼</title>
    </anime>
</animetitles>

Я могу получить помощь с PowerShell со следующими

[xml]$XmlDocument = Get-Content -Path data.xml
$XmlDocument.animetitles.anime.aid

, и я могу получить титул с идентификатором require со следующим

, например, aid = 1 и получить титул с тегом main

[xml]$XmlDocument = Get-Content -Path C:\testxml\data.xml
$XmlDocument.animetitles.anime | Where-Object {$_.aid -eq 1} | Select-Object -property title | ForEach-Object title | Where-Object {$_.type -eq 'main'}

Я хотел бы объединить обе информации, но у меня нет идеи, как, я было интересно, если кто-то может указать мне правильное направление? То, что я хотел бы заархивировать, - это, например, извлечь информацию из 2 столбцов, 1 для помощи и заголовка info

aid и title

1 Ответ

2 голосов
/ 30 января 2020

Как правило, вы можете использовать комбинацию Where и Select-Object с вычисленными свойствами для получения необходимой информации.

Отображение обоих свойств без условий

$XmlDocument.animetitles.anime | Select-Object aid,@{n='title';e={$_.Title.'#text'}}

Отображение обоих свойств с условиями

$XmlDocument.animetitles.anime |
    Where {$_.aid -eq 1} |
        Select-Object aid,@{n='title';e={$_.Title.where{$_.Type -eq 'main'}.'#text'}}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...