Как получить родительский узел данного дочернего узла с помощью PowerShell?

-1

Я новичок в PowerShell. Я должен написать скрипт, который может вернуть мне значение первого родителя (узла), передав дочерний узел.

У меня есть следующий XML. Когда я передаю сценарию PowerShell значение «AAA», он должен возвращать «parent2», а когда я передаю «III», он должен возвращать «parent311».

Может кто-нибудь помочь мне написать этот сценарий?

XML:

<root>
  <parent>
    <parent2>
      <child>AAA</child>
    </parent2>
    <parent3>
      <child>BBB</child>
      <child>CCC</child>
      <child>DDD</child>
    </parent3>
    <parent4>
      <child>EEE</child>
    </parent4>
    <parent5>
      <child>FFF</child>
    </parent5>
  </parent>
  <parent21>
    <parent211>
      <child>GGG</child>
    </parent211>
    <parent311>
      <child>HHH</child>
      <child>III</child>
      <child>JJJ</child>
    </parent311>
    <parent411>
      <child>KKK</child>
    </parent411>
    <parent511>
      <child>LLL</child>
    </parent511>
  </parent21>
</root>
Кумар
источник
Я могу отображать детали дочернего тега, я не знаю, как получить детали родительского тега, указав значение дочернего тега. И я новичок в этом PowerShell. Если есть возможность восстановить это, пожалуйста, дайте мне знать.
kumar

Ответы:

0

Если у вас есть ссылка на дочерний узел, вы можете получить его родительский узел, используя ParentNodeсвойство с соответствующим именем . Например, с файлом XML, который вы разместили:

$xml = [xml](Get-Content file.xml)
$child = $xml.SelectSingleNode("root/parent/parent2/child")
$child.ParentNode.Name

Конечно, вы, вероятно, используете какой-то другой метод для получения дочернего узла SelectSingleNode(), но он служит для иллюстрации примера. Результат вышеупомянутого будет:

parent2
Индрек
источник
Большое спасибо. Но я должен написать сценарий, в котором мы должны передавать только "child", а не полный путь как "root / parent / parent2 / child". Если у нас есть какие-либо варианты, чтобы получить таким образом, пожалуйста, дайте мне знать. Спасибо
kumar
@kumar Ну, вы сказали, что «способны отображать детали дочернего тега», из чего я понимаю, что у вас уже есть код, чтобы взять имя дочернего узла и получить ссылку на него. SelectSingleNode()в моем ответе был только пример, вы должны заменить его реальным кодом, который у вас есть. Или, если я неправильно понял, то, возможно, вы могли бы отредактировать вопрос, чтобы показать, какой код у вас есть и что он делает?
Индрек