1

ドット表記を使用して、この XML 内の Web 要素のリストを見つけようとしています。

<Databases>
    <Database SiteCount="2" Name="MyDB" DataSource="BLAHDEV">
        <Site Id="72affdff-b0a9-404e-a000-08cfc1c2828a" OwnerLogin="Blah\Blah" InSiteMap="True">
            <Webs Count="1">
                <Web Id="5fb7df63-0ab3-4cb2-88de-1a94ceda0fbf" Url="/people/me/blah" LanguageId="1033" TemplateName="SPSPERS#0" TemplateId="21" />
            </Webs>
        </Site>
        <Site Id="9ae7dd88-cdd9-4d22-b6af-2185ddb22994" OwnerLogin="Blah\Blah" InSiteMap="True">
            <Webs Count="1">
                <Web Id="45d2d002-4e7d-4f22-9cd2-c93fdd49daab" Url="/people/me/blah2" LanguageId="1033" TemplateName="SPSPERS#0" TemplateId="21" />
            </Webs>
        </Site>
    </Database>
</Databases>

次に、それを powershell にロードします。

[xml]$xml = Get-Content MyXMLFile.xml

ドット表記を使用したクエリは、Site 要素まで機能します。

PS> $xml
Databases
---------
Databases

PS> $xml.Databases
Database
--------
Database

PS> $xml.Databases.Database
SiteCount             Name              DataSource      Site
---------             ----              ----------      ----
2                     MyDB              BLAHDEV         {Site, Site}

PS> $xml.Databases.Database.Site
Id                            OwnerLogin        InSiteMap                 Webs
--                            ----------        ---------                 ----
72affdff-b0a9-404e-a000-08... Blah\Blah         True                      Webs
9ae7dd88-cdd9-4d22-b6af-21... Blah\Blah         True                      Webs

ただし、Web 要素を取得しようとすると、結果が返されません。

PS> $xml.Databases.Database.Site.Webs
PS>

Webs 要素が見つからない理由はありますか? Site 要素が複数あるためでしょうか、それとも何か他の理由でしょうか。

4

1 に答える 1

4

$xml.Databases.Database.Siteコレクションである場合は、パイプラインする必要があります。

$xml.Databases.Database.Site | Select -Expand Webs

またはxpathを使用します(編集:SelectNodesはコレクションではなく各要素用です)

...Site | ForEach { $_.SelectNodes('Webs') } #or something similar

またはループする

...Site | ForEach { $_.Webs } 
于 2013-07-18T23:10:38.620 に答える