首页 > 解决方案 > 如果语句为真,则使用 Xpath 搜索字段名的值并打印另一个属性

问题描述

我目前正在寻找一种方法来搜索 xml 文件并在满足条件时显示属性。

xml文件是这样的

<Import xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <Category Name="Personen-Stellen-Import">
    <Record>
       <Field FieldName="Person.EmailGeschaeft">
        <String>bla.blup1@ospelt.com</String>
      </Field>
      <Field FieldName="Person.IstReferent">
        <String>1</String>
      </Field>
    </Record>
    <Record>
      <Field FieldName="Person.EmailGeschaeft">
        <String>bla.blup2@ospelt.com</String>
      </Field>
      <Field FieldName="Person.IstReferent">
        <String>0</String>
      </Field>
    </Record>
    <Record>
      <Field FieldName="Person.EmailGeschaeft">
        <String>bla.blup3@ospelt.com</String>
      </Field>
      <Field FieldName="Person.IstReferent">
        <String>0</String>
      </Field>
    </Record>
    <Record>
      <Field FieldName="Person.EmailGeschaeft">
        <String>bla.blup4@ospelt.com</String>
      </Field>
      <Field FieldName="Person.IstReferent">
        <String>1</String>
      </Field>
    </Record>
  </Category>
</Import>

每个人都有它的条目<rekord> and </rekord>。现在如果Field Fieldname = "Person.IstReferent"匹配下的字符串1,它应该打印这个特定人的电子邮件。电子邮件存储在FieldName"Person.EmailGeschaeft. 你知道有什么方法可以制作一个powershell脚本,它可以显示所有符合条件的电子邮件并将其打印在一个文件中或显示它?

标签: xmlpowershellxpath

解决方案


Sage Pourpre 的回答是完美的。更短的 XPath :

//String[text()="1"]/preceding::String[1]/text()

推荐阅读