使用Powershell从XML源提取数据

德韦恩C

我有一个超过30k条目的xml文件。这个想法是根据生命数字搜索并根据与该人的数据相关联的信息创建表。由于某些原因,主要来源“人”没有链接到“约会”下方的子来源。我不知道如何链接这些。我能够创建两个函数来提取每个集合。但是我想将两者都链接到一个函数中来。在这里,我可以查询生活号码并将人/约会数据一起收集。

源数据样本:(以下面的确切格式创建测试xml)

  <Person lifenumber="21596" lname="LOVER" mname="J" fname="JERRY" affiliation="Hospital One" email="[email protected]" building="" floor="" room="" phone="" hrstatus="A" active_direct_user="lassej04" active_direct_provider="HOSPITAL">
    <Appointment affiliation="Hospital One" deptname="Cardiology" divname="" deptcode="821" title="ASST CLIN PROF"/>
  </Person>
  <Person lifenumber="27901" lname="WINNER" mname="" fname="KURT" affiliation="Hospital One" email="[email protected]" building="Annenberg" floor="17 TH FL" room="17-44" phone="(212) 241-1234" hrstatus="A" active_direct_user="hirsck01" active_direct_provider="MSSMCAMPUS">
    <Appointment affiliation="Hospital One" deptname="Pediatrics" divname="" deptcode="852" title="PROF LECTR"/>
  </Person>
  <Person lifenumber="30899" lname="OLYMPIA" mname="R" fname="MARTIN" affiliation="Hospital One" email="[email protected]" building="" floor="" room="" phone="" hrstatus="A" active_direct_user="gellem03" active_direct_provider="HOSPITAL">
    <Appointment affiliation="Hospital One" deptname="Neurology" divname="" deptcode="841" title="ASSOC CLN PROF"/>
    <Appointment affiliation="Hospital One" deptname="Neurology" divname="" deptcode="105" title="ASSOC ATTN"/>
  </Person>
  <Person lifenumber="31183" lname="SCOOBY" mname="" fname="JAMES" affiliation="Hospital Two" email="" building="" floor="" room="" phone="" hrstatus="A" active_direct_user="" active_direct_provider="">
    <Appointment affiliation="Elmhurst/Queens Hospital" deptname="Otolaryngology" divname="" deptcode="A35" title="O.R. TECH"/>
  </Person>


-------------------------------------------------------------------------------------------------
Functions BUILT BELOW

$xmlPath = 'C:\Scripts\source.xml'
[xml]$data = Get-Content $xmlPath

#pulls everything above 'Appointment"
function Search-LifeNumber 
{
    param(
        $Source = $data,
        [Parameter(Mandatory=$true,
        Position=0)]
        $LifeNumber

    )

    $Target = $Source.People.Person | ? {$_.LifeNumber -eq $LifeNumber} 

    return $Target
}
#pulls Deptment Code data associated with targeted node
function Search-ByDepartmentCode 
{
    param(
        $Source = $data,
        [Parameter(Mandatory=$true,
            Position=0)]
        $DepartmentCode

    )

    $Target = $Source.SelectNodes('//People/Person/Appointment') | ? {$_.deptcode -eq $DepartmentCode} 

    return $Target
}
普里兹

您可以基于属性值搜索XML。使用XPath语法/path/to/node[@attribute="value"]像这样

[xml]$p = get-content c:\temp\people.xml

# Search by Appointment at deptcode A35
$nl = $p.SelectNodes('/People/Person/Appointment[@deptcode="A35"]')
# How many results?
$nl.Count 
1
# Check the deptname
$nl[0].deptname
Otolaryngology
# Check the parent node's affliation?
$nl[0].parentnode.affiliation
Hospital Two


# Search by lifenumber
$nl = $p.SelectNodes('/People/Person[@lifenumber="30899"]')
# Check the email
$nl.email
[email protected]
# How many appointments?
$nl.appointment.count
2
# See the titles
$nl.appointment | % { $_.title }
ASSOC CLN PROF
ASSOC ATTN

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

解析XML以在PowerShell中分组提取数据

来自分类Dev

使用SQL提取XML数据

来自分类Dev

使用javascript提取XML数据

来自分类Dev

使用VBA从Javascript函数源中提取数据

来自分类Dev

PostgreSQL:使用xpath从XML列提取数据

来自分类Dev

使用XMLTABLE和xquery从xml提取数据

来自分类Dev

使用XMLTable函数从Xml提取数据

来自分类Dev

使用ElementTree从XML提取数据的麻烦

来自分类Dev

使用PHP simpleXML提取XML数据

来自分类Dev

C#使用Linq从xml提取数据

来自分类Dev

使用SQL从XML提取相关数据

来自分类Dev

使用Python从XML读取/提取数据

来自分类Dev

使用python从xml提取特定数据

来自分类Dev

在Python中使用ElementTree从XML提取数据

来自分类Dev

使用XPath无法从XML文档提取数据

来自分类Dev

无法使用JAVA从网站提取xml数据

来自分类Dev

如何使用xpath或查询从xml提取数据

来自分类Dev

使用 Python 3 从 xml 中提取数据

来自分类Dev

使用Python从xml文件中提取数据

来自分类Dev

使用 python 提取和绘制 XML 数据

来自分类Dev

SSRS:如何使用带参数的 XML 文档数据源

来自分类Dev

在Powershell中使用数据对象XML

来自分类Dev

Python从xml提取数据

来自分类Dev

如何从XML提取数据

来自分类Dev

从xml提取数据

来自分类Dev

使用Powershell将数据从SharePoint文档库提取到CSV

来自分类Dev

如何使用 PowerShell 从 .dll 或 .exe 文件中提取数据

来自分类Dev

什么是核心数据源提取

来自分类Dev

数据提取返回源条件格式