我有多個 XML 檔案,我必須從中提取資料并準備一個特定資料的 CSV 檔案。
我需要在一個元素包含多個屬性的情況下找到一個屬性值,并且我還需要對這些屬性進行過濾。
在下面的示例中,我如何在 AuthID csv 欄位中獲得 "123456AB "的值?我已經嘗試了不止下面的5個例子,但沒有成功。
注意,xml & 代碼已被簡化(代碼/結構/值),因為我不能發布整個例子。
謝謝你
XML摘錄:
<?xml version="1.0" encoding="utf-8" standalone="yes"? >
<?xml-stylesheet href="somestylesheet.xsl" type="text/xsl"? >
<MyDocument xmlns:ext="namespace1" xmlns。 xsi="namespace2" xmlns="defaultnamespace">
<ext:asEntityIdentifier classCode="IDENT">
<ext:id root="123. 456.0.12341" assigningAuthorityName="ABC-1" <>
</ext:asEntityIdentifier>
<ext:asEntityIdentifier classCode="IDENT"/span>>
<ext:id root="1656.123。 2" extension="123456AB" assigningAuthorityName="Some Auth Name" /> assigningAuthorityName="Some Auth Name"
</ext:asEntityIdentifier>
</MyDocument>/span>
Powershell腳本摘錄
# 讀入xml檔案內容
[xml]$xmlData = Get-Content -Path "C: empmytest.xml"
# 宣告所需的多個XML命名空間
$nsMngr = New-Object System.Xml.XmlNameSpaceManager($xmlData.NameTable)
$nsMngr.AddNamespace("ns", $xmlData.DocumentElement.NamespaceURI) # 默認值
$nsMngr.AddNamespace("ext", "namespace1")
# 準備一個相關xml資料的PSCustomObject
$reqdData = [PSCustomObject]@{
AuthID1 $xmlData.SelectSingleNode("//ns:MyDocument/ext:asEntityIdentifier[@classCode=""IDENT""]/ext:id[@assigningAuthorityName=""Some Auth Name"]", $nsMngr)
AuthID2 $xmlData.SelectSingleNode("//ns:MyDocument/ext:asEntityIdentifier[@classCode=""IDENT""]/ext:id[@assigningAuthorityName=""Some Auth Name"]", $nsMngr) |選擇擴展
AuthID3 $xmlData.SelectSingleNode("//ns:MyDocument/ext:asEntityIdentifier[@classCode=""IDENT""]/ext:id[@assigningAuthorityName=""Some Authorh Name""]/extension", $nsMngr)
AuthID4 $xmlData.SelectSingleNode("//ns:MyDocument/ext:asEntityIdentifier[@classCode=""IDENT""]/ext:id[@assigningAuthorityName=""Some Authorh Name""]/ext:extension", $nsMngr)
AuthID5 $xmlData.SelectSingleNode("//ns:MyDocument/ext:asEntityIdentifier[@classCode=""IDENT""]/ext:id[@assigningAuthorityName=""Some Authorh Name""]/@extension", $nsMngr)
}
# 將相關資料寫入一個csv檔案中
$reqdData | Export-Csv -Path $extractFile -NoTypeInformation -Force -Append
# CSV內容。AuthID1 = "System.Xml.XmlElement", AuthID2 = "@{extension=123456AB}", AuthID3和4都是空白, AuthID5 = "System.Xml.XmlAttribute"
uj5u.com熱心網友回復:
$reqdData = [PSCustomObject]@{
AuthID = $xmlData.SelectSingleNode("//ns:MyDocument/ext:asEntityIdentifier[@classCode=""IDENT""]/ext:id[@assigningAuthorityName=""Some Auth Name"]", $nsMngr) |選擇-擴展屬性擴展
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/324055.html
標籤:
