【发布时间】:2021-09-08 10:37:25
【问题描述】:
我有一个用于 Sonus SBC 的 API,它以 XML 格式返回模拟端口的结果。我有三个子节点,每个子节点的值数量相同,我需要将它们转换为数组/表。问题是每个节点都有一个逗号分隔的字符串,所以我剩下三个对象,每个对象都包含一个如下所示的字符串:
ApplyToChannelList 1.1,1.2,1.3,1.4
ChannelOwnNumberList 71750,51375,53004,53146
FXSHotlineNumberList 53940,,,70309
我尝试尝试ConvertFrom-String,但这会创建三个单独的数组,我无法弄清楚如何将它们连接在一起。
我试过For-Each,它不会处理任何东西并且没有给出任何结果。
- 我已尝试拆分字符串并将它们添加到自定义对象中。
- 我尝试拆分字符串并用逗号将它们连接在一起以尝试创建一个数组。
我的猜测是我需要先拆分字符串,然后使用可能嵌套的 For-Each 将它们放入自定义对象,但是当我的第一个 For-Each 失败时,它会变得很棘手。
要获得我需要的三个节点,我使用以下内容:
$rest = Invoke-RestMethod -Uri $BackupUrl -Method GET -ContentType "text/html;charset=UTF-8" -Body $null -WebSession $ps -Verbose
$xml = ([xml]$rest.Trim())
$child = $xml.ChildNodes.Cassg | Select-Object ApplyToChannelList, ChannelOwnNumberList, FXSHotlineNumberList
非常感谢任何有关尝试什么类型的命令的建议或提示。
预期输出:
ApplyToChannelList ChannelOwnNumberList FXSHotlineNumberList
1.1 71750
1.2 51375 56072
XML 输出
id : 20001
href : https://hostname.dns/rest/cassg/20001
ActionSetTableId : 0
ApplyToChannelList : 1.1,1.2,1.3,1.4,1.5,1.6,1.7,1.8,1.9,1.10,1.11,1.12,1.13,1.14,1.15,1.16,1.17,1.18,1.19,1.20,1.21,1.22,1.23,1.24,2.1,2.2,2.3,2.4,2.5,2.6,2.7,2.8,2.9,2.10,2.11,2.12,2.13,2.14,2.15,2.16,2.17,2.18,2.19,2.20
CallForward : 0
CallForwardActivate : *72
CallForwardDeactivate : *73
CallInformationFormatENM : 0
CallerIDType : 0
CallerIdPrivacySignaling :
CasEnMProfileId : 0
CasLineType : 0
CasLoopStartFxoProfileId : 0
CasLoopStartFxsProfileId : CasLoopStartFxsProfileId
CasR2ProfileId : 0
CasSgDTMFCallerIDEndDelimiter : 12
CasSgDTMFCallerIDStartDelimiter : 13
CasSgDirection : 2
CasSgENMDelimiterDigit : 15
CasSgENMEndDigit : 15
CasSgENMStartDigit : 15
CasSgHuntMethod : 5
CasSgRingbackPlayPolicy : 0
CasSignalingType : 0
CasSupplementaryProfileId : 0
ChannelOwnNumberList : 71750,51375,53004,53146,53940,58940,70153,70309,71125,71681,75033,75021,75027,75015,75104,75120,75126,75145,75151,75320,75326,75351,75380,75449,52417,52895,75393,58627,53154,58473,51932,51871,53022,53595,19144,19152,19127,1
9137,19101,19105,19112,19117,53410,54952
ConfigIEState : 1
Description : CAS FXS Analog Ports
EndOfDialDigit :
FXSCallForwardingNumberList : ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
FXSHotlineNumberList : ,,,,,,,,,,56072,56072,56072,56072,56072,,,,56072,,,,,,,,,,,,,,,,,,,,,,,,,
NoChannelAvailableId : 34
RelayCallingName : 1
RouteTableId : RouteTableId
TimerSanitySetup : 255000
ToneTableId : ToneTableId
customAdminState : 1
rt_CasSgCurrentCalls : 1
rt_CasSgIncomingCallsAttempted : 197
rt_CasSgIncomingCallsConnected : 143
rt_CasSgOutgoingCallsAttempted : 22
rt_CasSgOutgoingCallsConnected : 9
rt_CasSignalingType : 0
【问题讨论】:
-
请与我们分享 XML 的示例表示以及预期的输出。
-
谢谢圣地亚哥。我不确定如何正确粘贴 XML 输出。我即将参加会议,但会回来尝试解决它。
标签: arrays xml powershell