Получить XML из строки (не из файла) - PullRequest
0 голосов
/ 11 января 2019

У меня есть сценарий PowerShell:

$xmlString="<root>
        <section>
            <node id='1'>AAA</node>
            <node id='2'>BBB</node>
            <node id='3'>CCC</node>
        </section>
    </root>"

$xml = New-Object -TypeName System.Xml.XmlDocument
$content = $xml.LoadXml($xmlString)

Значение $content равно null

Внутреннее исключение в $xml, переменная <Error retrieving property - ArgumentException>

Я проверил, начинается ли строка с [System.Text.Encoding]::UTF8.GetPreamble(), но это не так.

Подскажите, пожалуйста, как правильно преобразовать такую ​​строку в XML?

Ответы [ 2 ]

0 голосов
/ 11 января 2019

Вы можете напрямую привести строку к XmlDocument следующим образом:

[xml]$xmlString="<root>
        <section>
            <node id='1'>AAA</node>
            <node id='2'>BBB</node>
            <node id='3'>CCC</node>
        </section>
    </root>"

Если вы хотите сохранить формат переменной, вы можете просто сделать это так:

$xmlString="<root>
        <section>
            <node id='1'>AAA</node>
            <node id='2'>BBB</node>
            <node id='3'>CCC</node>
        </section>
    </root>"

[xml]$content = $xmlString

Чтобы прокомментировать комментарий @AnsgarWiechers, если вы действительно хотите использовать LoadXML, он должен выглядеть следующим образом:

$xmlString=
"<root>
        <section>
            <node id='1'>AAA</node>
            <node id='2'>BBB</node>
            <node id='3'>CCC</node>
        </section>
</root>"

$xml = New-Object -TypeName System.Xml.XmlDocument
$xml.LoadXml($xmlString)

LoadXml загрузит значение из заданной строки в переменную $xml, которая вызывает метод.

Не возвращает никакого значения, но сохраняет его в $xml.

0 голосов
/ 11 января 2019

ConvertFrom-Xml это то, что вам нужно!

Он доступен в галерее PowerShell как часть Avande.CoolFunctions

$xmlString = @"
<root>
    <section>
        <node id='1'>AAA</node>
        <node id='2'>BBB</node>
        <node id='3'>CCC</node>
    </section>
</root>
"@

$xmlString | ConvertFrom-Xml
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...