Разбор файлов атомов в Powershell - PullRequest
0 голосов
/ 19 июня 2019

Я пытаюсь разобрать канал Microsoft Windows 10:

$feed = "https://support.microsoft.com/app/content/api/content/feeds/sap/en-us/6ae59d69-36fc-8e4d-23dd-631d98bf74a9/atom"
$resp = Invoke-WebRequest -Uri "$feed"

Однако преобразование ответа в XML с помощью [xml]($resp.Content) выдает ошибку.
Простое исправление - удаление исходного (пустое).?) символ:

[xml]($resp.Content.Substring(1))

Какой, кстати, правильный путь?

1 Ответ

1 голос
/ 19 июня 2019

Как указано в комментариях, вы можете либо Invoke-RestMethod позаботиться о разборе контента для вас:

$atoms = Invoke-RestMethod -Uri "$feed"

, либо вы можете использовать оператор регулярного выражения -replace для обрезки форматирования символов сначало строки:

$atomDoc = $resp.Content -replace '^\p{Cf}' -as [xml]

\p{Cf} соответствует любому символу, который подпадает под категорию формата Unicode


Если вы ищете более полную очистку вашей входной строкиВы также можете удалить любой символ , который не принадлежит в XML-документе:

$resp.Content -replace '[^\x09\x0A\x0D\x20-\xD7FF\xE000-\xFFFD\x10000\x10FFFF]',''
...