0

Windows Powershell に、コンテンツがテキストである要素を含む XML ドキュメントがあります。次の例の $xa のように、要素に別の要素が含まれる場合、要素として公開されますが、テキストのみの子 ($xab) は文字列として公開されます。

PS C:\> $x = [xml]"<a><b>Some Text</b></a>
PS C:\> $x.a -is [Xml.XmlElement]
True
PS C:\> $x.a.b -is [Xml.XmlElement]
False
PS C:\> $x.a.b -is [string]
True

これが便利な理由は理解できますが、b に XmlElement としてアクセスしたいのです。これは可能ですか?もしそうなら、どうすればできますか?

4

1 に答える 1

1

方法を試してくださいGetElementByTagName。元:

$x.a.GetElementsByTagName("b")

#text
-----
Some Text

$x.a.GetElementsByTagName("b").gettype()

IsPublic IsSerial Name                                     BaseType
-------- -------- ----                                     --------
False    False    XmlElementList                           System.Xml.XmlNodeList


$x.a.GetElementsByTagName("b")[0].gettype()

IsPublic IsSerial Name                                     BaseType
-------- -------- ----                                     --------
True     False    XmlElement                               System.Xml.XmlLinkedNode

または、必要に応じて xpath を使用します。

$x.a.SelectSingleNode("b")

#text
-----
Some Text

$x.a.SelectSingleNode("b").gettype()

IsPublic IsSerial Name                                     BaseType
-------- -------- ----                                     --------
True     False    XmlElement                               System.Xml.XmlLinkedNode
于 2013-05-18T10:17:52.203 に答える