У меня есть следующий XML:Выберите узлы XML из пространства имен с помощью Powershell
<?xml version="1.0" encoding="utf-8"?>
<userSettings>
<setting name="TelephonyServerHost">
<value>sipserver.domain.local</value>
</setting>
<setting name="SipServerFqdn">
<value>sipserver.domain.local</value>
</setting>
<setting name="WebServicesHost">
<value>websvc.domain.local</value>
</setting>
<setting name="KMSettings">
<value>
<KMIndexSettings xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<AutoIndexEnabled>false</AutoIndexEnabled>
</KMIndexSettings>
</value>
</setting>
</userSettings>
Я могу получить значение установочных элементов с помощью XPath, но я не могу понять правильный синтаксис для запроса элемента AutoIndexEnabled используя пространство имен.
Это работает, как ожидалось для чтения KMSettings или другие узлы, которые не имеют имен:
$xml = New-Object -TypeName 'System.XML.XMLDocument'
$xml.Load($xmlFilePath)
$node = $xml.SelectSingleNode("//userSettings/setting[@name='KMSettings']")
Но я не могу понять синтаксис, как запросить элемент AutoIndexEnabled.
Я не пользователь PowerShell, так что не будет в состоянии помочь с PowerShell специфический синтаксис, но в терминах xml элемент AutoIndexEnabled находится в пространстве имен xsi, поэтому вы должны использовать возможности PowerShell для доступа к пространству имен, а затем к узлам в этом пространстве имен. Выполнение быстрого поиска Я нашел [этот ответ] (http://stackoverflow.com/questions/25566269/select-an-attribute-with-xpath-in-a-xml-with-namespace-using-powershell), который похоже, соответствует вашей проблеме –