|
-
Jun 26th, 2024, 02:38 PM
#1
Thread Starter
Frenzied Member
Setting the value of an XML node among nodes with the same name
Suppose I have the following XML string:
Code:
<PartOverrides>
<PartOverride>
<Name>Cab.Case.LF</Name>
<Parameter>
<Name>BAND</Name>
<Type>T</Type>
<Value>NEE</Value></Parameter></PartOverride>
<PartOverride>
<Name>Cab.Case.RF</Name>
<Parameter>
<Name>BAND</Name>
<Type>T</Type>
<Value>NNEE</Value></Parameter></PartOverride>
<PartOverride>
<Name>Cab.Interior.PT</Name>
<Thickness>19.000</Thickness>
<Material>R000300</Material></PartOverride>
<PartOverride>
<Name>Cab.Interior.PT@2</Name>
<Thickness>19.000</Thickness>
<Material>R000300</Material></PartOverride>
<PartOverride>
<Name>Cab.Face.DWR_OPEN.DBOX.DWR.S_DSLAB</Name>
<Shape><template firstid="1" unit="mm"><geometry><entity id="1" type="line2d"><end><x>604.8325</x></end><parameters><parameter name="_PROFTYPE"><value type="4">1</value></parameter></parameters></entity><entity id="2" type="line2d"><begin><x>604.8325</x></begin><end><x>604.8325</x><y>349.245</y></end><parameters><parameter name="_PROFTYPE"><value type="4">1</value></parameter></parameters></entity><entity id="3" type="line2d"><begin><y>349.245</y></begin><parameters><parameter name="_PROFTYPE"><value type="4">1</value></parameter></parameters></entity><entity id="4" type="line2d"><begin><x>604.8325</x><y>349.245</y></begin><end><y>349.245</y></end><parameters><parameter name="_PROFTYPE"><value type="4">1</value></parameter></parameters></entity></geometry></template></Shape></PartOverride>
<PartOverride>
<Name>[email protected]_DSLAB</Name>
<Shape><template firstid="1" unit="mm"><geometry><entity id="1" type="line2d"><end><x>604.8325</x></end><parameters><parameter name="_PROFTYPE"><value type="4">1</value></parameter></parameters></entity><entity id="2" type="line2d"><begin><x>604.8325</x></begin><end><x>604.8325</x><y>349.245</y></end><parameters><parameter name="_PROFTYPE"><value type="4">1</value></parameter></parameters></entity><entity id="3" type="line2d"><begin><y>349.245</y></begin><parameters><parameter name="_PROFTYPE"><value type="4">1</value></parameter></parameters></entity><entity id="4" type="line2d"><begin><x>604.8325</x><y>349.245</y></begin><end><y>349.245</y></end><parameters><parameter name="_PROFTYPE"><value type="4">1</value></parameter></parameters></entity></geometry></template></Shape></PartOverride>
</PartOverrides>
How would I set the value of the <Material> node under the 3rd <PartOverride> node? (Highlighted above)
The string above is part of a larger XML string that is defined as an XElement. The kicker is that the 3rd <PartOverride> node may not always be 3rd, so I think you would have to get the node based on the value in the <Name> node...
Last edited by nbrege; Jun 26th, 2024 at 02:56 PM.
-
Jun 26th, 2024, 03:00 PM
#2
Re: Setting the value of an XML node among nodes with the same name
This works.
Code:
Dim xe As XElement = <PartOverrides>
<PartOverride>
<Name>Cab.Case.LF</Name>
<Parameter>
<Name>BAND</Name>
<Type>T</Type>
<Value>NEE</Value></Parameter></PartOverride>
<PartOverride>
<Name>Cab.Case.RF</Name>
<Parameter>
<Name>BAND</Name>
<Type>T</Type>
<Value>NNEE</Value></Parameter></PartOverride>
<PartOverride>
<Name>Cab.Interior.PT</Name>
<Thickness>19.000</Thickness>
<Material>R000300</Material></PartOverride>
<PartOverride>
<Name>Cab.Interior.PT@2</Name>
<Thickness>19.000</Thickness>
<Material>R000300</Material></PartOverride>
<PartOverride>
<Name>Cab.Face.DWR_OPEN.DBOX.DWR.S_DSLAB</Name>
<Shape><template firstid="1" unit="mm"><geometry><entity id="1" type="line2d"><end><x>604.8325</x></end><parameters><parameter name="_PROFTYPE"><value type="4">1</value></parameter></parameters></entity><entity id="2" type="line2d"><begin><x>604.8325</x></begin><end><x>604.8325</x><y>349.245</y></end><parameters><parameter name="_PROFTYPE"><value type="4">1</value></parameter></parameters></entity><entity id="3" type="line2d"><begin><y>349.245</y></begin><parameters><parameter name="_PROFTYPE"><value type="4">1</value></parameter></parameters></entity><entity id="4" type="line2d"><begin><x>604.8325</x><y>349.245</y></begin><end><y>349.245</y></end><parameters><parameter name="_PROFTYPE"><value type="4">1</value></parameter></parameters></entity></geometry></template></Shape></PartOverride>
<PartOverride>
<Name>[email protected]_DSLAB</Name>
<Shape><template firstid="1" unit="mm"><geometry><entity id="1" type="line2d"><end><x>604.8325</x></end><parameters><parameter name="_PROFTYPE"><value type="4">1</value></parameter></parameters></entity><entity id="2" type="line2d"><begin><x>604.8325</x></begin><end><x>604.8325</x><y>349.245</y></end><parameters><parameter name="_PROFTYPE"><value type="4">1</value></parameter></parameters></entity><entity id="3" type="line2d"><begin><y>349.245</y></begin><parameters><parameter name="_PROFTYPE"><value type="4">1</value></parameter></parameters></entity><entity id="4" type="line2d"><begin><x>604.8325</x><y>349.245</y></begin><end><y>349.245</y></end><parameters><parameter name="_PROFTYPE"><value type="4">1</value></parameter></parameters></entity></geometry></template></Shape></PartOverride>
</PartOverrides>
Dim ie As IEnumerable(Of XElement)
ie = From el In xe...<PartOverride> Skip 2 Take 1 Select el
If ie.Count = 1 Then
ie(0).<Material>.Value = "123456789"
End If
-
Jun 26th, 2024, 03:05 PM
#3
Thread Starter
Frenzied Member
Re: Setting the value of an XML node among nodes with the same name
 Originally Posted by dbasnett
This works.
Thank you for the quick reply. You may not have noticed, but I edited my original post to add more info. The particular node I want to change may not always be in the 3rd node, so I think you would have to get the desired parent node by the value in the <Name> node. I hope that makes sense. My apologies for not being more precise with what I want to do...
Last edited by nbrege; Jun 26th, 2024 at 03:10 PM.
-
Jun 26th, 2024, 03:54 PM
#4
Re: Setting the value of an XML node among nodes with the same name
What about hte name node? Should be able to use that to pull the parent PartOverride
-tg
-
Jun 26th, 2024, 04:56 PM
#5
Thread Starter
Frenzied Member
Re: Setting the value of an XML node among nodes with the same name
 Originally Posted by techgnome
What about hte name node? Should be able to use that to pull the parent PartOverride
-tg
Yes, that's what I mentioned in the edit of my original post, but I'm not sure how to do it...
-
Jun 27th, 2024, 08:09 AM
#6
Re: Setting the value of an XML node among nodes with the same name
 Originally Posted by nbrege
Thank you for the quick reply. You may not have noticed, but I edited my original post to add more info. The particular node I want to change may not always be in the 3rd node, so I think you would have to get the desired parent node by the value in the <Name> node. I hope that makes sense. My apologies for not being more precise with what I want to do...
Just change the query.
Code:
Dim ie As IEnumerable(Of XElement)
ie = From el In xe...<PartOverride> Where el.<Name>.Value = "Cab.Interior.PT" Select el Take 1
If ie.Count = 1 Then
ie(0).<Material>.Value = "123456789"
End If
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
-
Forum Rules
|
Click Here to Expand Forum to Full Width
|