Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用PowerShell替换来自另一个文档XML节点值数组的一个XML中的XML值_Powershell - Fatal编程技术网

使用PowerShell替换来自另一个文档XML节点值数组的一个XML中的XML值

使用PowerShell替换来自另一个文档XML节点值数组的一个XML中的XML值,powershell,Powershell,我对XML文档中的替换值有问题 我有两段xml: XmlFile_1 <CorpusLink ArchiveHandle="hdl:2196/00-0000-0000-000F-72B3-8" Name=" ">../Metadata/A_short_autobiography_of_Herculino_Alves.imdi</CorpusLink> <CorpusLink ArchiveHandle="hdl:2196/00-0000-0000-000F-

我对XML文档中的替换值有问题

我有两段xml:

XmlFile_1

<CorpusLink ArchiveHandle="hdl:2196/00-0000-0000-000F-72B3-8" Name="     ">../Metadata/A_short_autobiography_of_Herculino_Alves.imdi</CorpusLink>
<CorpusLink ArchiveHandle="hdl:2196/00-0000-0000-000F-72B5-E" Name=" tttttt    ">../Metadata/Wordlist_and_phrases_-_modifiers.imdi</CorpusLink>

<CorpusLink ArchiveHandle="hdl:2196/00-0000-0000-000F-72B9-6" Name=" hhhhhh    ">../desano-silva-0151/Metadata/The_Turtle_and_the_Deer.imdi</CorpusLink>
<CorpusLink ArchiveHandle="hdl:2196/00-0000-0000-000F-72BB-1" Name=" jjjjjj    ">../desano-silva-0151/Metadata/Wordlist_and_phrases_parts_of_a_tree.imdi</CorpusLink>
<CorpusLink ArchiveHandle="hdl:2196/00-0000-0000-000F-72BD-B" Name=" kkkkk    ">../desano-silva-0151/Metadata/Wordlist_and_phrases_.imdi</CorpusLink>
目前,我有以下代码:

$Targfiles = Get-ChildItem C:\WorkingFolder\ *.xml
$TrgContent = [xml](Get-Content $Targfiles)

$Sourcfiles = New-Object System.Collections.ArrayList;
$Sourcfiles = Get-ChildItem C:\WorkingFolder\Source\*.xml
$SrcContent = Foreach ($item in $Sourcfiles){[xml] (Get-Content $item)}

$TrgContent.METATRANSCRIPT.Corpus.CorpusLink | ForEach-Object {[String]$_.Name= Foreach ($element in $SrcContent)    {$element.METATRANSCRIPT.Corpus.CorpusLink}}

$OutputFile=$Targfiles.Name
$TrgContent.Save("C:\WorkingFolder\output\$OutputFile")
代码正在运行,但我无法获得所需的结果,这是我的问题:

$TrgContent.METATRANSCRIPT.Corpus.CorpusLink | ForEach-Object {[String]$_.Name= Foreach ($element in $SrcContent){$element.METATRANSCRIPT.Corpus.CorpusLink}}
结果:

<CorpusLink ArchiveHandle="hdl:2196/00-0000-0000-000F-72B3-8" Name="     ">../Metadata/A_short_autobiography_of_Herculino_Alves.imdi</CorpusLink>
<CorpusLink ArchiveHandle="hdl:2196/00-0000-0000-000F-72B5-E" Name="     ">../Metadata/Wordlist_and_phrases_-_modifiers.imdi</CorpusLink>
<CorpusLink ArchiveHandle="hdl:2196/00-0000-0000-000F-72B7-9" Name="     ">../desano-silva-0151/Metadata/Wordlist_fruits_and_cultural_items.imdi</CorpusLink>

<CorpusLink ArchiveHandle="hdl:2196/00-0000-0000-000F-72B9-6" Name="     ">../desano-silva-0151/Metadata/The_Turtle_and_the_Deer.imdi</CorpusLink>

<CorpusLink ArchiveHandle="hdl:2196/00-0000-0000-000F-72BD-B" Name="     ">../desano-silva-0151/Metadata/Wordlist_and_phrases_.imdi</CorpusLink>
。/Metadata/A_short_Herculino_Alves.imdi的自传
../Metadata/Wordlist\u和\u短语\u--\u修饰符.imdi
../desano-silva-0151/Metadata/Wordlist\u fruits\u and\u cultural\u items.imdi
../desano-silva-0151/Metadata/The_Turtle_和_The_Deer.imdi
../desano-silva-0151/Metadata/Wordlist_和_短语_u.imdi
CorpusLink.Name中的值为空。我如何解决这个问题


提前感谢

您正在从同一标记分配值,
字符串
类型转换也不需要。试试下面

$i = 0
$TrgContent.METATRANSCRIPT.Corpus.CorpusLink | ForEach-Object {
    $_.Name= $SrcContent[$i].Session.Name.'#text'
    $i++
}

谢谢你的帮助!这个工作很好。
<CorpusLink ArchiveHandle="hdl:2196/00-0000-0000-000F-72B3-8" Name="     ">../Metadata/A_short_autobiography_of_Herculino_Alves.imdi</CorpusLink>
<CorpusLink ArchiveHandle="hdl:2196/00-0000-0000-000F-72B5-E" Name="     ">../Metadata/Wordlist_and_phrases_-_modifiers.imdi</CorpusLink>
<CorpusLink ArchiveHandle="hdl:2196/00-0000-0000-000F-72B7-9" Name="     ">../desano-silva-0151/Metadata/Wordlist_fruits_and_cultural_items.imdi</CorpusLink>

<CorpusLink ArchiveHandle="hdl:2196/00-0000-0000-000F-72B9-6" Name="     ">../desano-silva-0151/Metadata/The_Turtle_and_the_Deer.imdi</CorpusLink>

<CorpusLink ArchiveHandle="hdl:2196/00-0000-0000-000F-72BD-B" Name="     ">../desano-silva-0151/Metadata/Wordlist_and_phrases_.imdi</CorpusLink>
$i = 0
$TrgContent.METATRANSCRIPT.Corpus.CorpusLink | ForEach-Object {
    $_.Name= $SrcContent[$i].Session.Name.'#text'
    $i++
}