Replace text in .xml file when find matching value in one field but need to update data in another field

Ask your Windows PowerShell-related questions, including questions on cmdlet development!
Forum rules
Do not post any licensing information in this forum.
Locked
User avatar
timstspry11
Posts: 11
Joined: Tue Jul 21, 2015 12:42 pm

Replace text in .xml file when find matching value in one field but need to update data in another field

Post by timstspry11 » Mon Dec 21, 2015 10:31 am

Hi, I have spent much time trying to figure out how to do this. I will do my best to explain what I am trying to do. Below is a single row of data from the .xml file I am trying to update:

<Row AreaParentID="2" ChildAreaID="2" ParentAreaID="1" StartDate="1986-06-01T00:00:00" CreateDate="2013-10-17T14:28:01.24" ChangeDate="2013-10-17T14:28:01.24" CreateWorkstationID="12345" ChangeWorkstationID="12345"/>

There will only ever be one row in the file that will match what I am looking for. What I need to do is find a given AreaParentID and then either update the StartDate or remove the start date from the row that was found. I have seen all sorts of examples using creplace and even RegEx, but they have all been fairly simplistic updating the same field that is being searched. Oh, I am not good with regular expressions and have never really used one in PowerShell.

Thanks in advance for any help provided!

Tim

User avatar
jvierra
Posts: 11156
Joined: Tue May 22, 2007 9:57 am
Contact:

Re: Replace text in .xml file when find matching value in one field but need to update data in another field

Post by jvierra » Mon Dec 21, 2015 10:42 am

Code: Select all

[xml]$xml=@'
<root>
<Row
AreaParentID="2"
ChildAreaID="2"
ParentAreaID="1"
StartDate="1986-06-01T00:00:00"
CreateDate="2013-10-17T14:28:01.24"
ChangeDate="2013-10-17T14:28:01.24"
CreateWorkstationID="12345"
ChangeWorkstationID="12345"
/>
</root>
'@

$n=$xml.SelectSingleNode('//Row[@AreaParentID="2"]')
$n.StartDate
#1986-06-01T00:00:00
$n.StartDate='2015-12-21T00:00:00'
$n.StartDate
#2015-12-21T00:00:00
$xml.Save($filename)

User avatar
timstspry11
Posts: 11
Joined: Tue Jul 21, 2015 12:42 pm

Re: Replace text in .xml file when find matching value in one field but need to update data in another field

Post by timstspry11 » Mon Dec 21, 2015 2:10 pm

Thank you for your help! I do appreciate it.

Tim

User avatar
jvierra
Posts: 11156
Joined: Tue May 22, 2007 9:57 am
Contact:

Re: Replace text in .xml file when find matching value in one field but need to update data in another field

Post by jvierra » Mon Dec 21, 2015 2:31 pm

That will not work if the XML is wrapped in custom namespaces. If so you will have to add more steps.

Locked