안녕하세요.
저는 powershell을 사용하여 XML의 값 (이름)을 CSV의 가짜 이름으로 바꿉니다. Real.xml (요소 스타일)과 Fake.csv의 두 파일이 있습니다.XML 파일의 요소 값을 CSV의 값으로 바꿉니다.
<?xml version="1.0"?>
<Data xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Node1>
<Node2>
<Element1>blahblahblah</Element1>
<Element2>blahbablahba</Element2>
<Node3>
<Node4>
<ElementIWannaChange>Cena, John</ElementIWannaChange>
<Element4>2016-02-11T09:04:15</Element4>
</Node4>
</Node3>
</Node2>
</Node1>
</Data>
Fake.csv는 다음과 같습니다 :
Real.xml이 같이 보입니다
ID,Fake_first_name,Fake_last_name,First_Name,LastName
16,Sommer,Agar,John,Cena
13,Steve,Hanson,Ben,Cook
103,Bill,Nye,Lynley,Dove
싶습니다 최종 결과는 PowerShell을 실제 이름을 대체 XML을 통해 갈 것입니다 CSV의 해당 위조 된 이름으로 위의 데이터를 제공 한 예 (Cena, John은 Agar, Sommer로 바뀜).
이것은 내가 지금까지 가지고있는 것입니다.
#This script takes the contents of the XML and exchanges the names in order that they appear with names from a CSV in the order that they appear.
#XML
$XMLpath = "D:\Temp\Real.xml"
$XMLnewPath = "D:\Temp\Replaced-Real.xml"
$XMLcontents = [XML] (Get-content $XMLpath)
$Node = $XMLcontents.SelectNodes("/Data/Node1/Node2/Node3/Node4/ElementIWannaChange")
#CSV
$CSVpath = "D:\Temp\Fake.csv"
$CSVcontents = Import-Csv $CSVpath
$i = 0
foreach($individual in $Node)
{
$field2 = $CSVcontents[$i].first_name
$field3 = $CSVcontents[$i].last_name
$individual.'#Text' = "$field3, $field2"
$i++
}
$XMLcontents.Save($XMLnewPath)
그런 다음 스크립트를 추가하십시오.이 질문은 현재 요청의 것이지만 문제를 해결하는 것이 아닙니다. . –
샘플이 여기에 섞이지 않았습니까? csv의'Fake_first_name'은 "진짜"XML의 값과 같습니다. XML에'Cena, John'이 있어야하지 않나요? –
예, 맞았습니다. 죄송합니다. – waylander232