Converting a CSV file into appropriate XML formatHow to output MySQL query results in CSV format?Dealing with commas in a CSV fileSave PL/pgSQL output from PostgreSQL to a CSV fileHow do I parse XML in Python?What does <![CDATA[]]> in XML mean?How to import CSV file data into a PostgreSQL table?How do you parse and process HTML/XML in PHP?Excel to CSV with UTF8 encodingHow To Auto-Format / Indent XML/HTML in Notepad++Writing a pandas DataFrame to CSV file
Disambiguation of "nobis vobis" and "nobis nobis"
Why did MS-DOS applications built using Turbo Pascal fail to start with a division by zero error on faster systems?
I can see my two means are different. What information can a t test add?
Was there ever a treaty between 2 entities with significantly different translations to the detriment of one party?
Understanding Parallelize methods
What to say to a student who has failed?
Immutable builder and updater
Nothing like a good ol' game of ModTen
Is there any way to keep a player from killing an NPC?
Are there any elected officials in the U.S. who are not legislators, judges, or constitutional officers?
The Knight's estate
Round towards zero
“T” in subscript in formulas
What are some interesting features that are common cross-linguistically but don't exist in English?
What would be the challenges to taking off and landing a typical passenger jet at FL300?
I don't have the theoretical background in my PhD topic. I can't justify getting the degree
Dealing with an extrovert co-worker
Architectural feasibility of a tiered circular stone keep
How do you harvest carrots in creative mode?
Numbers Decrease while Letters Increase
Would the Republic of Ireland and Northern Ireland be interested in reuniting?
Can a Rogue PC teach an NPC to perform Sneak Attack?
How do I request a longer than normal leave of absence period for my wedding?
Is using a hyperlink to close a modal a poor design decision?
Converting a CSV file into appropriate XML format
How to output MySQL query results in CSV format?Dealing with commas in a CSV fileSave PL/pgSQL output from PostgreSQL to a CSV fileHow do I parse XML in Python?What does <![CDATA[]]> in XML mean?How to import CSV file data into a PostgreSQL table?How do you parse and process HTML/XML in PHP?Excel to CSV with UTF8 encodingHow To Auto-Format / Indent XML/HTML in Notepad++Writing a pandas DataFrame to CSV file
.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty margin-bottom:0;
I'm trying to get some tab-delimited CSV files into an XML via PowerShell, and I'm struggling to make sense of it all. I'm 100% sure it's something really simple I'm missing, so help would be massively appreciated. I'm very close but just can't get over the final hurdle.
I essentially want this script to iterate through a tab-delimited CSV it's pointed at ($path
), take each line off of the CSV and put the data into an XML sheet ($xmlpath
).
CSV example:
"Name" "Item" "Purchase Price"
"Jimmy Smits" "Egg" "£40"
"Edward Price" "KumQuat" "£6000"
"Timmy Mallet" "Bug" "£2"
"Edgar Allen Poe" "Weird" "0"
"2Pac Shakur" "Eggnog" ""
XML output template example:
<registration>
<Individual>
<Name></Name>
<Item></Item>
<Purchase Price></Purchase Price>
</Individual>
</registration>
And this is what I've been poking about with
$data = Import-Csv -Path $path -Delimiter "`t"
$xmlnames = $data | Select-Object "Name"
$xmlitems = $data | Select-Object "Item"
$xmlprice = $data | Select-Object "Purchase Price"
$entryTemplate = @'
<individual>
<Name>$($xmlnames.Name)</Name>
<Item>$($xmlitems.Item)</Item>
<Purchase Price>$($xmlprice."Purchase Price")</Purchase Price>
</individual>
'@
$xml = $data | ForEach-Object
$ExecutionContext.InvokeCommand.ExpandString($entrytemplate)
$xml | Out-File $xmlpath
Which then puts out;
<Individual>
<Name>Jimmy Smits Edward Price Timmy Mallet Edgar Allen Poe 2Pac Shakur</Name>
<Item>System.Object IList.Item(int index) get;set;</Item>
<Purchase Price>£40 £6000 £2 0 </Purchase Price>
</Individual>
So somewhere I'm messing up stupidly on two things;
- The
$data | Select-Object 'thing'
is giving me all of the list of 'things' rather than iterating through each of the 'things' and listing them one per XML entry. Yet is giving me the correct number of entries? - My 'Items' are being listed as system objects (not values), despite being treated identically to everything else.
xml powershell csv
add a comment |
I'm trying to get some tab-delimited CSV files into an XML via PowerShell, and I'm struggling to make sense of it all. I'm 100% sure it's something really simple I'm missing, so help would be massively appreciated. I'm very close but just can't get over the final hurdle.
I essentially want this script to iterate through a tab-delimited CSV it's pointed at ($path
), take each line off of the CSV and put the data into an XML sheet ($xmlpath
).
CSV example:
"Name" "Item" "Purchase Price"
"Jimmy Smits" "Egg" "£40"
"Edward Price" "KumQuat" "£6000"
"Timmy Mallet" "Bug" "£2"
"Edgar Allen Poe" "Weird" "0"
"2Pac Shakur" "Eggnog" ""
XML output template example:
<registration>
<Individual>
<Name></Name>
<Item></Item>
<Purchase Price></Purchase Price>
</Individual>
</registration>
And this is what I've been poking about with
$data = Import-Csv -Path $path -Delimiter "`t"
$xmlnames = $data | Select-Object "Name"
$xmlitems = $data | Select-Object "Item"
$xmlprice = $data | Select-Object "Purchase Price"
$entryTemplate = @'
<individual>
<Name>$($xmlnames.Name)</Name>
<Item>$($xmlitems.Item)</Item>
<Purchase Price>$($xmlprice."Purchase Price")</Purchase Price>
</individual>
'@
$xml = $data | ForEach-Object
$ExecutionContext.InvokeCommand.ExpandString($entrytemplate)
$xml | Out-File $xmlpath
Which then puts out;
<Individual>
<Name>Jimmy Smits Edward Price Timmy Mallet Edgar Allen Poe 2Pac Shakur</Name>
<Item>System.Object IList.Item(int index) get;set;</Item>
<Purchase Price>£40 £6000 £2 0 </Purchase Price>
</Individual>
So somewhere I'm messing up stupidly on two things;
- The
$data | Select-Object 'thing'
is giving me all of the list of 'things' rather than iterating through each of the 'things' and listing them one per XML entry. Yet is giving me the correct number of entries? - My 'Items' are being listed as system objects (not values), despite being treated identically to everything else.
xml powershell csv
when you type $data[0] ...it should output the first row of the csv...if not, the csv is not well-formed... make sure it is actually a csv file. Then proceed with other steps.
– Kiran
Mar 27 at 18:03
add a comment |
I'm trying to get some tab-delimited CSV files into an XML via PowerShell, and I'm struggling to make sense of it all. I'm 100% sure it's something really simple I'm missing, so help would be massively appreciated. I'm very close but just can't get over the final hurdle.
I essentially want this script to iterate through a tab-delimited CSV it's pointed at ($path
), take each line off of the CSV and put the data into an XML sheet ($xmlpath
).
CSV example:
"Name" "Item" "Purchase Price"
"Jimmy Smits" "Egg" "£40"
"Edward Price" "KumQuat" "£6000"
"Timmy Mallet" "Bug" "£2"
"Edgar Allen Poe" "Weird" "0"
"2Pac Shakur" "Eggnog" ""
XML output template example:
<registration>
<Individual>
<Name></Name>
<Item></Item>
<Purchase Price></Purchase Price>
</Individual>
</registration>
And this is what I've been poking about with
$data = Import-Csv -Path $path -Delimiter "`t"
$xmlnames = $data | Select-Object "Name"
$xmlitems = $data | Select-Object "Item"
$xmlprice = $data | Select-Object "Purchase Price"
$entryTemplate = @'
<individual>
<Name>$($xmlnames.Name)</Name>
<Item>$($xmlitems.Item)</Item>
<Purchase Price>$($xmlprice."Purchase Price")</Purchase Price>
</individual>
'@
$xml = $data | ForEach-Object
$ExecutionContext.InvokeCommand.ExpandString($entrytemplate)
$xml | Out-File $xmlpath
Which then puts out;
<Individual>
<Name>Jimmy Smits Edward Price Timmy Mallet Edgar Allen Poe 2Pac Shakur</Name>
<Item>System.Object IList.Item(int index) get;set;</Item>
<Purchase Price>£40 £6000 £2 0 </Purchase Price>
</Individual>
So somewhere I'm messing up stupidly on two things;
- The
$data | Select-Object 'thing'
is giving me all of the list of 'things' rather than iterating through each of the 'things' and listing them one per XML entry. Yet is giving me the correct number of entries? - My 'Items' are being listed as system objects (not values), despite being treated identically to everything else.
xml powershell csv
I'm trying to get some tab-delimited CSV files into an XML via PowerShell, and I'm struggling to make sense of it all. I'm 100% sure it's something really simple I'm missing, so help would be massively appreciated. I'm very close but just can't get over the final hurdle.
I essentially want this script to iterate through a tab-delimited CSV it's pointed at ($path
), take each line off of the CSV and put the data into an XML sheet ($xmlpath
).
CSV example:
"Name" "Item" "Purchase Price"
"Jimmy Smits" "Egg" "£40"
"Edward Price" "KumQuat" "£6000"
"Timmy Mallet" "Bug" "£2"
"Edgar Allen Poe" "Weird" "0"
"2Pac Shakur" "Eggnog" ""
XML output template example:
<registration>
<Individual>
<Name></Name>
<Item></Item>
<Purchase Price></Purchase Price>
</Individual>
</registration>
And this is what I've been poking about with
$data = Import-Csv -Path $path -Delimiter "`t"
$xmlnames = $data | Select-Object "Name"
$xmlitems = $data | Select-Object "Item"
$xmlprice = $data | Select-Object "Purchase Price"
$entryTemplate = @'
<individual>
<Name>$($xmlnames.Name)</Name>
<Item>$($xmlitems.Item)</Item>
<Purchase Price>$($xmlprice."Purchase Price")</Purchase Price>
</individual>
'@
$xml = $data | ForEach-Object
$ExecutionContext.InvokeCommand.ExpandString($entrytemplate)
$xml | Out-File $xmlpath
Which then puts out;
<Individual>
<Name>Jimmy Smits Edward Price Timmy Mallet Edgar Allen Poe 2Pac Shakur</Name>
<Item>System.Object IList.Item(int index) get;set;</Item>
<Purchase Price>£40 £6000 £2 0 </Purchase Price>
</Individual>
So somewhere I'm messing up stupidly on two things;
- The
$data | Select-Object 'thing'
is giving me all of the list of 'things' rather than iterating through each of the 'things' and listing them one per XML entry. Yet is giving me the correct number of entries? - My 'Items' are being listed as system objects (not values), despite being treated identically to everything else.
xml powershell csv
xml powershell csv
edited Mar 27 at 17:45
Ansgar Wiechers
153k15 gold badges144 silver badges205 bronze badges
153k15 gold badges144 silver badges205 bronze badges
asked Mar 27 at 17:37
HonkytonkHonkytonk
83 bronze badges
83 bronze badges
when you type $data[0] ...it should output the first row of the csv...if not, the csv is not well-formed... make sure it is actually a csv file. Then proceed with other steps.
– Kiran
Mar 27 at 18:03
add a comment |
when you type $data[0] ...it should output the first row of the csv...if not, the csv is not well-formed... make sure it is actually a csv file. Then proceed with other steps.
– Kiran
Mar 27 at 18:03
when you type $data[0] ...it should output the first row of the csv...if not, the csv is not well-formed... make sure it is actually a csv file. Then proceed with other steps.
– Kiran
Mar 27 at 18:03
when you type $data[0] ...it should output the first row of the csv...if not, the csv is not well-formed... make sure it is actually a csv file. Then proceed with other steps.
– Kiran
Mar 27 at 18:03
add a comment |
2 Answers
2
active
oldest
votes
The three statements
$xmlnames = $data | Select-Object "Name"
$xmlitems = $data | Select-Object "Item"
$xmlprice = $data | Select-Object "Purchase Price"
give you lists of custom objects with just one property. Using these lists in your template inserts all values into a tag with each iteration. What you want is just the value from the current iteration, hence creating the lists before doesn't do you any good. What you actually want is the current object during each iteration of the loop.
In case of $xmlitems
you're also running into a PowerShell gotcha, because the variables $xmlnames
, $xmlitems
, and $xmlprice
are arrays. When using dot-access on an array PowerShell is doing something that is called member enumeration. Essentially $xmlnames.Name
won't give you the value of the property Name
of the array object, but the value of the property Name
of all array elements.
Member enumeration only works if the array object itself doesn't have a member of that name, though. Which brings us back to $xmlitems
. For that variable you're trying to get the value of the property Item
of the array elements. However, the array object actually has a method Item()
, so $xmlitems.Item
tries to invoke that method instead of the Item
property of the array elements. But since the method is overloaded and the invocation is missing parentheses ($xmlitems.Item
instead of $xmlitems.Item()
) PowerShell shows you the method definition instead.
Remove the Select-Object
statements and replace the array variables in your XML fragment template with the "current object" variable $_
and the code will do what you want.
$entryTemplate = @'
<individual>
<Name>$($_.Name)</Name>
<Item>$($_.Item)</Item>
<Purchase Price>$($_."Purchase Price")</Purchase Price>
</individual>
'@
'Doh' of course! I was sure the select-objects were causing the multiple selections, but I couldn't wrap my head around the methods/arrays. Thanks for taking the time to explain it properly for me, this is now working perfectly!
– Honkytonk
Mar 28 at 9:05
add a comment |
You can also use "LINQ to XML" to create xml.
using namespace "System.Xml.Linq"
Add-Type -AssemblyName System.Xml.Linq
[XElement]::new("registration", @(
Import-Csv -Path $path -Delimiter "`t" | foreach
[XElement]::new("Individual",
[XElement]::new("Name", $_.Name),
[XElement]::new("Item", $_.Item),
[XElement]::new("PurchasePrice", $_."Purchase Price"))
)).Save($xmlpath)
add a comment |
Your Answer
StackExchange.ifUsing("editor", function ()
StackExchange.using("externalEditor", function ()
StackExchange.using("snippets", function ()
StackExchange.snippets.init();
);
);
, "code-snippets");
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "1"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55383413%2fconverting-a-csv-file-into-appropriate-xml-format%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
2 Answers
2
active
oldest
votes
2 Answers
2
active
oldest
votes
active
oldest
votes
active
oldest
votes
The three statements
$xmlnames = $data | Select-Object "Name"
$xmlitems = $data | Select-Object "Item"
$xmlprice = $data | Select-Object "Purchase Price"
give you lists of custom objects with just one property. Using these lists in your template inserts all values into a tag with each iteration. What you want is just the value from the current iteration, hence creating the lists before doesn't do you any good. What you actually want is the current object during each iteration of the loop.
In case of $xmlitems
you're also running into a PowerShell gotcha, because the variables $xmlnames
, $xmlitems
, and $xmlprice
are arrays. When using dot-access on an array PowerShell is doing something that is called member enumeration. Essentially $xmlnames.Name
won't give you the value of the property Name
of the array object, but the value of the property Name
of all array elements.
Member enumeration only works if the array object itself doesn't have a member of that name, though. Which brings us back to $xmlitems
. For that variable you're trying to get the value of the property Item
of the array elements. However, the array object actually has a method Item()
, so $xmlitems.Item
tries to invoke that method instead of the Item
property of the array elements. But since the method is overloaded and the invocation is missing parentheses ($xmlitems.Item
instead of $xmlitems.Item()
) PowerShell shows you the method definition instead.
Remove the Select-Object
statements and replace the array variables in your XML fragment template with the "current object" variable $_
and the code will do what you want.
$entryTemplate = @'
<individual>
<Name>$($_.Name)</Name>
<Item>$($_.Item)</Item>
<Purchase Price>$($_."Purchase Price")</Purchase Price>
</individual>
'@
'Doh' of course! I was sure the select-objects were causing the multiple selections, but I couldn't wrap my head around the methods/arrays. Thanks for taking the time to explain it properly for me, this is now working perfectly!
– Honkytonk
Mar 28 at 9:05
add a comment |
The three statements
$xmlnames = $data | Select-Object "Name"
$xmlitems = $data | Select-Object "Item"
$xmlprice = $data | Select-Object "Purchase Price"
give you lists of custom objects with just one property. Using these lists in your template inserts all values into a tag with each iteration. What you want is just the value from the current iteration, hence creating the lists before doesn't do you any good. What you actually want is the current object during each iteration of the loop.
In case of $xmlitems
you're also running into a PowerShell gotcha, because the variables $xmlnames
, $xmlitems
, and $xmlprice
are arrays. When using dot-access on an array PowerShell is doing something that is called member enumeration. Essentially $xmlnames.Name
won't give you the value of the property Name
of the array object, but the value of the property Name
of all array elements.
Member enumeration only works if the array object itself doesn't have a member of that name, though. Which brings us back to $xmlitems
. For that variable you're trying to get the value of the property Item
of the array elements. However, the array object actually has a method Item()
, so $xmlitems.Item
tries to invoke that method instead of the Item
property of the array elements. But since the method is overloaded and the invocation is missing parentheses ($xmlitems.Item
instead of $xmlitems.Item()
) PowerShell shows you the method definition instead.
Remove the Select-Object
statements and replace the array variables in your XML fragment template with the "current object" variable $_
and the code will do what you want.
$entryTemplate = @'
<individual>
<Name>$($_.Name)</Name>
<Item>$($_.Item)</Item>
<Purchase Price>$($_."Purchase Price")</Purchase Price>
</individual>
'@
'Doh' of course! I was sure the select-objects were causing the multiple selections, but I couldn't wrap my head around the methods/arrays. Thanks for taking the time to explain it properly for me, this is now working perfectly!
– Honkytonk
Mar 28 at 9:05
add a comment |
The three statements
$xmlnames = $data | Select-Object "Name"
$xmlitems = $data | Select-Object "Item"
$xmlprice = $data | Select-Object "Purchase Price"
give you lists of custom objects with just one property. Using these lists in your template inserts all values into a tag with each iteration. What you want is just the value from the current iteration, hence creating the lists before doesn't do you any good. What you actually want is the current object during each iteration of the loop.
In case of $xmlitems
you're also running into a PowerShell gotcha, because the variables $xmlnames
, $xmlitems
, and $xmlprice
are arrays. When using dot-access on an array PowerShell is doing something that is called member enumeration. Essentially $xmlnames.Name
won't give you the value of the property Name
of the array object, but the value of the property Name
of all array elements.
Member enumeration only works if the array object itself doesn't have a member of that name, though. Which brings us back to $xmlitems
. For that variable you're trying to get the value of the property Item
of the array elements. However, the array object actually has a method Item()
, so $xmlitems.Item
tries to invoke that method instead of the Item
property of the array elements. But since the method is overloaded and the invocation is missing parentheses ($xmlitems.Item
instead of $xmlitems.Item()
) PowerShell shows you the method definition instead.
Remove the Select-Object
statements and replace the array variables in your XML fragment template with the "current object" variable $_
and the code will do what you want.
$entryTemplate = @'
<individual>
<Name>$($_.Name)</Name>
<Item>$($_.Item)</Item>
<Purchase Price>$($_."Purchase Price")</Purchase Price>
</individual>
'@
The three statements
$xmlnames = $data | Select-Object "Name"
$xmlitems = $data | Select-Object "Item"
$xmlprice = $data | Select-Object "Purchase Price"
give you lists of custom objects with just one property. Using these lists in your template inserts all values into a tag with each iteration. What you want is just the value from the current iteration, hence creating the lists before doesn't do you any good. What you actually want is the current object during each iteration of the loop.
In case of $xmlitems
you're also running into a PowerShell gotcha, because the variables $xmlnames
, $xmlitems
, and $xmlprice
are arrays. When using dot-access on an array PowerShell is doing something that is called member enumeration. Essentially $xmlnames.Name
won't give you the value of the property Name
of the array object, but the value of the property Name
of all array elements.
Member enumeration only works if the array object itself doesn't have a member of that name, though. Which brings us back to $xmlitems
. For that variable you're trying to get the value of the property Item
of the array elements. However, the array object actually has a method Item()
, so $xmlitems.Item
tries to invoke that method instead of the Item
property of the array elements. But since the method is overloaded and the invocation is missing parentheses ($xmlitems.Item
instead of $xmlitems.Item()
) PowerShell shows you the method definition instead.
Remove the Select-Object
statements and replace the array variables in your XML fragment template with the "current object" variable $_
and the code will do what you want.
$entryTemplate = @'
<individual>
<Name>$($_.Name)</Name>
<Item>$($_.Item)</Item>
<Purchase Price>$($_."Purchase Price")</Purchase Price>
</individual>
'@
answered Mar 27 at 18:11
Ansgar WiechersAnsgar Wiechers
153k15 gold badges144 silver badges205 bronze badges
153k15 gold badges144 silver badges205 bronze badges
'Doh' of course! I was sure the select-objects were causing the multiple selections, but I couldn't wrap my head around the methods/arrays. Thanks for taking the time to explain it properly for me, this is now working perfectly!
– Honkytonk
Mar 28 at 9:05
add a comment |
'Doh' of course! I was sure the select-objects were causing the multiple selections, but I couldn't wrap my head around the methods/arrays. Thanks for taking the time to explain it properly for me, this is now working perfectly!
– Honkytonk
Mar 28 at 9:05
'Doh' of course! I was sure the select-objects were causing the multiple selections, but I couldn't wrap my head around the methods/arrays. Thanks for taking the time to explain it properly for me, this is now working perfectly!
– Honkytonk
Mar 28 at 9:05
'Doh' of course! I was sure the select-objects were causing the multiple selections, but I couldn't wrap my head around the methods/arrays. Thanks for taking the time to explain it properly for me, this is now working perfectly!
– Honkytonk
Mar 28 at 9:05
add a comment |
You can also use "LINQ to XML" to create xml.
using namespace "System.Xml.Linq"
Add-Type -AssemblyName System.Xml.Linq
[XElement]::new("registration", @(
Import-Csv -Path $path -Delimiter "`t" | foreach
[XElement]::new("Individual",
[XElement]::new("Name", $_.Name),
[XElement]::new("Item", $_.Item),
[XElement]::new("PurchasePrice", $_."Purchase Price"))
)).Save($xmlpath)
add a comment |
You can also use "LINQ to XML" to create xml.
using namespace "System.Xml.Linq"
Add-Type -AssemblyName System.Xml.Linq
[XElement]::new("registration", @(
Import-Csv -Path $path -Delimiter "`t" | foreach
[XElement]::new("Individual",
[XElement]::new("Name", $_.Name),
[XElement]::new("Item", $_.Item),
[XElement]::new("PurchasePrice", $_."Purchase Price"))
)).Save($xmlpath)
add a comment |
You can also use "LINQ to XML" to create xml.
using namespace "System.Xml.Linq"
Add-Type -AssemblyName System.Xml.Linq
[XElement]::new("registration", @(
Import-Csv -Path $path -Delimiter "`t" | foreach
[XElement]::new("Individual",
[XElement]::new("Name", $_.Name),
[XElement]::new("Item", $_.Item),
[XElement]::new("PurchasePrice", $_."Purchase Price"))
)).Save($xmlpath)
You can also use "LINQ to XML" to create xml.
using namespace "System.Xml.Linq"
Add-Type -AssemblyName System.Xml.Linq
[XElement]::new("registration", @(
Import-Csv -Path $path -Delimiter "`t" | foreach
[XElement]::new("Individual",
[XElement]::new("Name", $_.Name),
[XElement]::new("Item", $_.Item),
[XElement]::new("PurchasePrice", $_."Purchase Price"))
)).Save($xmlpath)
edited May 22 at 4:51
answered Mar 27 at 19:01
rokumarurokumaru
8581 gold badge3 silver badges9 bronze badges
8581 gold badge3 silver badges9 bronze badges
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55383413%2fconverting-a-csv-file-into-appropriate-xml-format%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
when you type $data[0] ...it should output the first row of the csv...if not, the csv is not well-formed... make sure it is actually a csv file. Then proceed with other steps.
– Kiran
Mar 27 at 18:03