LINQ To XML Samples - DMLOn This Page |
Add an element as the last child
Public Sub XLinq60()
Dim doc = XDocument.Load(dataPath + "config.xml")
Dim config = doc.<config>(0)
config.Add(<logFolder>c:\log</logFolder>)
Console.WriteLine(config)
End Sub
Result:
<config>
<rootFolder>c:\</rootFolder>
<iterations>5</iterations>
<maxMemory>50.5</maxMemory>
<tempFolder>c:\temp</tempFolder>
<logFolder>c:\log</logFolder>
</config>
Add an element as the first child
Public Sub XLinq61()
Dim doc = XDocument.Load(dataPath + "config.xml")
Dim config = doc.<config>(0)
config.AddFirst(<logFolder>c:\log</logFolder>)
Console.WriteLine(config)
End Sub
Result:
<config>
<logFolder>c:\log</logFolder>
<rootFolder>c:\</rootFolder>
<iterations>5</iterations>
<maxMemory>50.5</maxMemory>
<tempFolder>c:\temp</tempFolder>
</config>
Add multiple elements as children
Public Sub XLinq62()
Dim doc = XDocument.Load(dataPath + "config.xml")
Dim first = <temp>
<logFolder>c:\log</logFolder>
<resultsFolders>c:\results</resultsFolders>
</temp>
Dim last = <temp>
<mode>client</mode>
<commPort>2</commPort>
</temp>
Dim config = doc.<config>(0)
config.AddFirst(first.Nodes())
config.Add(last.Nodes())
Console.WriteLine(config)
End Sub
Result:
<config>
<logFolder>c:\log</logFolder>
<resultsFolders>c:\results</resultsFolders>
<rootFolder>c:\</rootFolder>
<iterations>5</iterations>
<maxMemory>50.5</maxMemory>
<tempFolder>c:\temp</tempFolder>
<mode>client</mode>
<commPort>2</commPort>
</config>
Add an attribute to an element
Public Sub XLinq63()
Dim elem = <customer id="abc">this is an XElement</customer>
Console.WriteLine("Original element {0}", elem)
elem.Add(New XAttribute("name", "Jack"))
Console.WriteLine("Updated element {0}", elem)
End Sub
Result:
Original element <customer id="abc">this is an XElement</customer>
Updated element <customer id="abc" name="Jack">this is an XElement</customer>
Add attributes and elements
Public Sub XLinq64()
Dim elem = <customer id="abc">this is an XElement</customer>
Console.WriteLine("Original element {0}", elem)
Dim additionalContent = <temp>
<phone>555-555-5555</phone>
<!--new customer-->
<%= New XAttribute("name", "Jack") %>
</temp>
elem.Add(additionalContent.Nodes())
Console.WriteLine("Updated element {0}", elem)
End Sub
Result:
Original element <customer id="abc">this is an XElement</customer>
Updated element <customer id="abc">this is an XElement<phone>555-555-5555</phone><!--new customer--></customer>
Replace content to an existing element
Public Sub XLinq65()
Dim elem = <customer id="abc">this is an XElement</customer>
Console.WriteLine("Original element {0}", elem)
elem.SetElementValue("id", "this is a customer element")
Console.WriteLine("Updated element {0}", elem)
Dim newContent = <temp>this is a customer element<phone>555-555-5555</phone>
<!-- new customer -->
<%= New XAttribute("name", "Jack") %>
</temp>
elem.SetValue(newContent.Nodes())
Console.WriteLine("Updated element {0}", elem)
End Sub
Result:
Original element <customer id="abc">this is an XElement</customer>
Updated element <customer id="abc">this is an XElement<id>this is a customer element</id></customer>
Updated element <customer id="abc">System.Xml.Linq.XContainer+<Nodes>d__0</customer>
Remove content of an element
Public Sub XLinq66()
Dim elem = <customer id="abc">this is an XElement</customer>
Console.WriteLine("Original element {0}", elem)
elem.RemoveAll()
Console.WriteLine("Updated element {0}", elem)
End Sub
Result:Original element <customer id="abc">this is an XElement</customer> Updated element <customer />
Remove all content and attributes of an element
Public Sub XLinq67()
Dim elem = _
<customer id="abc">
<name>jack</name>this is an XElement<!--new customer-->
</customer>
Console.WriteLine("Original element {0}", elem)
elem.RemoveAll()
Console.WriteLine("Stripped element {0}", elem)
End Sub
Result:
Original element <customer id="abc">
<name>jack</name>this is an XElement<!--new customer--></customer>
Stripped element <customer />
Remove all attributes of an element
Public Sub XLinq68()
Dim elem = _
<customer name="jack" id="abc">this is an XElement<!--new customer-->
</customer>
Console.WriteLine("Original element {0}", elem)
elem.RemoveAttributes()
Console.WriteLine("Stripped element {0}", elem)
End Sub
Result:
Original element <customer name="jack" id="abc">this is an XElement<!--new customer--></customer>
Stripped element <customer>this is an XElement<!--new customer--></customer>
Remove an attribute of an element
Public Sub XLinq69()
Dim elem = _
<customer name="jack" id="abc">this is an XElement<!--new customer-->
</customer>
Console.WriteLine("Original element {0}", elem)
elem.@id = Nothing
Console.WriteLine("Updated element {0}", elem)
End Sub
Result:
Original element <customer name="jack" id="abc">this is an XElement<!--new customer--></customer>
Updated element <customer name="jack">this is an XElement<!--new customer--></customer>
Update the value of an attribute
Public Sub XLinq70()
Dim elem = _
<customer name="jack" id="abc">this is an XElement<!--new customer-->
</customer>
Console.WriteLine("Original element {0}", elem)
elem.@name = "David"
Console.WriteLine("Updated attribute {0}", elem)
End Sub
Result:
Original element <customer name="jack" id="abc">this is an XElement<!--new customer--></customer>
Updated attribute <customer name="David" id="abc">this is an XElement<!--new customer--></customer>
Remove a child element by name
Public Sub XLinq71()
Dim elem = _
<customer id="abc">
<name>jack</name>this is an XElement<!--new customer-->
</customer>
Console.WriteLine("Original element {0}", elem)
elem.SetElementValue("name", Nothing)
Console.WriteLine("Updated element {0}", elem)
End Sub
Result:
Original element <customer id="abc">
<name>jack</name>this is an XElement<!--new customer--></customer>
Updated element <customer id="abc">this is an XElement<!--new customer--></customer>
Update a child element by name
Public Sub XLinq72()
Dim elem = _
<customer id="abc">
<name>jack</name>this is an XElement<!--new customer-->
</customer>
Console.WriteLine("Original element {0}", elem)
elem.<name>.Value = "David"
Console.WriteLine("Updated element {0}", elem)
End Sub
Result:
Original element <customer id="abc">
<name>jack</name>this is an XElement<!--new customer--></customer>
Updated element <customer id="abc">
<name>David</name>this is an XElement<!--new customer--></customer>
Remove a list of elements
Public Sub XLinq73()
Dim doc = XDocument.Load(dataPath + "nw_customers.xml")
Dim elems = doc.<Root>.<Customers>
Console.WriteLine("Before count {0}", elems.Count())
elems.Take(15).Remove()
Console.WriteLine("After count {0}", elems.Count())
End Sub
Result:
Before count 91
After count 76
Remove a list of attributes
Public Sub XLinq74()
Dim doc = XDocument.Load(dataPath + "nw_customers.xml")
Dim attrs = doc...<Customers>.Attributes()
Console.WriteLine("Before count {0}", attrs.Count())
attrs.Take(15).Remove()
Console.WriteLine("After count {0}", attrs.Count())
End Sub
Result:
Before count 91
After count 76
Add an un-parented element to an element
Public Sub XLinq75()
Dim e = <foo>this is an element</foo>
If e.Parent Is Nothing Then
Console.WriteLine("Parent : Nothing")
Else
Console.WriteLine("Parent : " + e.Parent.Value)
End If
Dim p = <bar><%= e %></bar> 'add to document
If e.Parent Is Nothing Then
Console.Write("Parent : Nothing")
Else
Console.WriteLine("Parent : " + e.Parent.Name.ToString)
End If
End Sub
Result:
Parent : Nothing
Parent : bar
Adding a parented element to another container clones it
Public Sub XLinq76()
Dim e = <foo>this is an element</foo>
Dim p1 = <p1><%= e %></p1>
Console.WriteLine("Parent : " + e.Parent.Name.ToString())
Dim p2 = <p2><%= e %></p2>
Console.WriteLine("Parent : " + e.Parent.Name.ToString())
End Sub
Result:
Parent : p1
Parent : p1