需要您的帮助。当我从json文件中获取描述时。我收到乱码输出。需要删除HTML标记和空间,但是我找不到适合我的问题的任何内容。
最后,在删除标签和Spacces之后..我如何获取特定字段的输出。例如姓氏值和部门。谢谢!
正确的输出应该是这样的,
Last Name: Tes Last name <br/>
Preferred Name: Test name <br/>
Company: test Company<br/>
Department: Test Department<br/>
我当前正在使用的代码:
$request = 'https://****F'
Invoke-WebRequest $request |
ConvertFrom-Json |
select -expand request |
Select -expand description ;# -replace(/<\/?[^>]+>/gi '')
文本是HTML(或至少是HTML片段),所以最好的方法是使用HTML解析器。
鉴于这些功能尚不可用,您可以尝试以下字符串解析方法:
$requestDescr =
Invoke-WebRequest 'https://****F' |
ConvertFrom-Json |
Select -expand request |
Select -expand description
$cleanLines = ($requestDescr -split '<br */>|</?div>').Trim() -ne ''
$requestDescr -split '<br */>|</?div>'
用<br>
和<div>
元素分割输入(使用正则表达式)
.Trim()
从所有结果字符串中删除前导和尾随空格。
-ne ''
然后过滤掉空字符串。
这将产生一系列行,例如:
Please set up an Active Directory account for Lou Segouci
Job Req ID: 417
Middle Name:
Last Name: Segoucy
Title: Payment Processing Keyer
为了将其转换为哈希表:
$fieldsTable = [ordered] @{}
$cleanLines -match ':' |
foreach { $key, $value = $_ -split ': *', 2; $fieldsTable[$key] = $value }
$key, $value = $_ -split ': *', 2
将每行分成2个标记:
,并可选地在其后跟空格,并将标记存储在不同的变量中。
$fieldsTable[$key] = $value
然后为此键值对添加一个条目。
注意:为了便于以后按属性(键)名称访问,可以使用$fieldsTable[$key -replace ' '] = $value
简化键名称,以便Job Req ID
可以更简单地以方式访问条目JobReqId
。
$fieldsTable
现在是一个(有序)哈希表用的键名Job Req ID
,Middle Name
......,让您使用表达式,如提取性能$fieldsTable['Job Req ID']
。
# Contents of $fieldsTable
Name Value
---- -----
Job Req ID 417
Middle Name
Last Name Segouci
Title Payment Processing Keyer
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句