2017-05-04 15 views
0

私はこのコードを実行しようとしています。取得しているコンテンツがhrefであることを検証し、画面に表示する方法はありますか?私のforeachループに何か問題はありますか?

[System.Xml.XmlDocument] $xd = New-Object System.Xml.XmlDocument 
$file = Resolve-Path("D:\Powershell\XML\iptree.xml") 
$xd.Load($file) 
$nodelist = $xd.SelectNodes("/name/@*") # XPath is case sensitive 
foreach ($attr in $nodelist) { 
    Write-Host "xml data " $attr 
} 

XMLファイル

<?xml version="1.0"?> 
<root> 
<item id="Integrated Projects - XYZ"> 
<content><name><![CDATA[Integrated Projects - XYZ]]></name></content> 
<item id="67e26e0e-32ad-432b-b054-7666301539ca"> 
<content><name href="https://inside.nov.com/ipeh/107377" target="_blank" ><![CDATA[377 - Train - ]]></name></content> 
</item> 
<item id="e9e91ec2-59c0-4122-b4f9-feb2aff6b2a6"> 
<content><name href="https://inside.nov.com/ipeh/107378" target="_blank" ><![CDATA[78 - Energy]]></name></content> 
</item> 
<item id="34043397-ec4b-480c-99c4-110f79e505bb"> 
<content><name href="https://inside.nov.com/ipeh/120025" target="_blank" ><![CDATA[25-Gam]]></name></content> 
</item> 
<item id="afe44549-b1ab-420c-b43a-fdd0ddbf7a7c"> 
<content><name href="https://inside.nov.com/ipeh/120026" target="_blank" ><![CDATA[26 - Pevamping]]></name></content> 
</item> 
</item> 
</root> 
+0

それはあなたが達成したいものを私に明確ではありません。 "内容が' href'であることを確認することはどういう意味ですか? ( ''?)ノードに 'href'属性が含まれていることを検証しますか? URLは有効ですか?あなたのサンプル入力からどのような出力を期待していますか? –

答えて

0

あなたは、以下のような何かを行うことができます。あなたのXMLの

出力:

xml data https://inside.nov.com/ipeh/107377 
xml data https://inside.nov.com/ipeh/107378 
xml data https://inside.nov.com/ipeh/120025 
xml data https://inside.nov.com/ipeh/120026 
0

あなただけのhrefタグ内のすべてのリンクを印刷したい場合は、正規表現持つものをつかむことができます:

$content = Get-Content 'D:\Powershell\XML\iptree.xml' -raw 
[regex]::Matches($content, 'href="([^"]+)') | ForEach-Object{ 
    $_.Groups[1].Value 
} 

を出力:

ことやホストへの書き込みに $attr.valueを使用する必要があります href属性のXPathを得るために

[System.Xml.XmlDocument] $xd = new-object System.Xml.XmlDocument 
$file = resolve-path("D:\Powershell\XML\iptree.xml") 
$xd.load($file) 
$nodelist = $xd.selectnodes("//name/@href") # XPath is case sensitive 
foreach ($attr in $nodelist) 
{ 
    write-host "xml data " $attr.value 

} 

https://inside.nov.com/ipeh/107377 
https://inside.nov.com/ipeh/107378 
https://inside.nov.com/ipeh/120025 
https://inside.nov.com/ipeh/120026 
+0

'href'sを得るために正規表現が過剰ですか? – SomeDude

+0

@svasa彼の必要に応じて。これはコードが少なく、xml解析を必要としません。おそらくそうではないでしょう。 –

関連する問題