In some cases, you may want to perform an operation on an existing and particular node. For example, you may want to change the value of a node, you may want to add a new child node to an existing node, etc. Before taking any of these actions, you must be able to locate or identify the desired element. Locating an element consists of looking for a particular node among the nodes. To do this, you must start somewhere. Obviously, the first node you can identify is the root. Once you get the root, you can then get a collection of its children. After getting a collection of the children of the root, you can locate a node in the collection. If the node you are looking for is a child of that first collection, you can then get a collection of the child nodes of that node and proceed.
Consider the following XML file named videos12.xml: <?xml version="1.0" encoding="utf-8"?> <videos> <video> <title>The Distinguished Gentleman</title> <director>Jonathan Lynn</director> <length>112 Minutes</length> <format>DVD</format> <rating>R</rating> </video> <video> <title>Her Alibi</title> <director>Bruce Beresford</director> <length>94 Minutes</length> <format>DVD</format> <rating>PG-13</rating> </video> <video> <title>The Day After Tomorrow</title> <director>Roland Emmerich</director> <length>124 Minutes</length> <format>DVD</format> <rating>PG-13</rating> </video> <video> <title>Other People's Money</title> <director>Alan Brunstein</director> <length>114 Minutes</length> <format>VHS</format> <rating>PG-13</rating> </video> </videos> We saw that the IXMLDOMNodeList interface is equipped with an indexed property named Item. That member allows you to access an element based on its index. Here are examples: Private Sub cmdLocate_Click() Dim docXMLDOM As DOMDocument Dim nodRoot As IXMLDOMElement Dim lstVideos As IXMLDOMNodeList Set docXMLDOM = New DOMDocument docXMLDOM.Load "C:\Exercises\videos12.xml" Set nodRoot = docXMLDOM.documentElement Set lstVideos = nodRoot.childNodes MsgBox lstVideos(0).Text MsgBox lstVideos(0).XML Set docXMLDOM = Nothing End Sub This would produce:
You can use this characteristic to locate a node. Because XML is very flexible with the names (you can have two child nodes that have the same name) and values (you can have two child nodes that have the same value) of nodes, when creating an XML file, it is your responsibility to create a scheme that would eventually allow you to uniquely identify each element.
To assist you with finding a node, the DOMDocument class is equipped with a method named getElementByTagName. Its syntax is: Public Function getElementsByTagName(ByVal tagName As String) As IXMLDOMNodeList This method takes as argument the name of a node as a string. If at least one node that holds that name exists in the document, this method returns a collection of the nodes with that name. If there is no node with that name, the collection is returned empty. Here is an example of calling the method: Private Sub cmdLocate_Click()
Dim docXMLDOM As DOMDocument
Dim nodRoot As IXMLDOMElement
Dim lstVideos As IXMLDOMNodeList
Set docXMLDOM = New DOMDocument
docXMLDOM.Load "C:\Exercises\videos12.xml"
Set nodRoot = docXMLDOM.documentElement
Set lstVideos = nodRoot.getElementsByTagName("title")
Set docXMLDOM = Nothing
End Sub
Once you have a list of the nodes of a particular criterion, you can then act as you see fit. For example, For example, you can look for a particular node that holds a text of your choice.
Consider the following document from a file named videos13.xml file: <?xml version="1.0" encoding="utf-8"?> <videos> <video> <title>The Distinguished Gentleman</title> <director>Jonathan Lynn</director> <length>112 Minutes</length> <format>DVD</format> <rating>R</rating> </video> <video> <title>Her Alibi</title> <director>Bruce Beresford</director> <length>94 Minutes</length> <format>DVD</format> <rating>PG-13</rating> </video> <video> <title>The Day After Tomorrow</title> <director>Roland Emmerich</director> <length>124 Minutes</length> <format>DVD</format> <rating>PG-13</rating> </video> <video> <title>Other People's Money</title> <director>Alan Brunstein</director> <length>114 Minutes</length> <format>VHS</format> <rating>PG-13</rating> </video> </videos> Imagine you want to create a new node as a child of one of the elements. The first action to take is to locate the element that will act as the parent. If/since you know the element, you can locate it using its name by calling the DOMDocument.getElementsByTagName() method applied to a collection of nodes. From that list of nodes, you can look for the node whose value you know. Once you have found this element, get a reference to its parent. Then add the new node as a child to its parent. This can be done as follows: Private Sub cmdInsertElement_Click() Dim Found As Boolean Dim docXMLDOM As DOMDocument Dim nodChild As IXMLDOMElement Dim nodParent As IXMLDOMElement Dim nodElement As IXMLDOMElement Dim lstVideos As IXMLDOMNodeList Found = False Set docXMLDOM = New DOMDocument docXMLDOM.Load "C:\Exercises\videos13.xml" Set lstVideos = docXMLDOM.getElementsByTagName("title") For Each nodElement In lstVideos If nodElement.Text = "Her Alibi" Then Set nodChild = docXMLDOM.createElement("actors") Set nodParent = nodElement.parentNode nodParent.appendChild nodChild docXMLDOM.Save "C:\Exercises\Videos13.xml" Found = True End If Next If Found = False Then MsgBox "There is no element with that value", _ vbOKOnly Or vbInformation, _ "Extensible Markup Language" End If Set docXMLDOM = Nothing End Sub This would produce: <?xml version="1.0" encoding="utf-8"?> <videos> . . . <video> <title>Her Alibi</title> <director>Bruce Beresford</director> <length>94 Minutes</length> <format>DVD</format> <rating>PG-13</rating> <actors></actors> </video> . . . </videos> This code creates an empty element. You may already know how to specify the value of an element: by assigning a string to its Text property. Here is an example: Private Sub cmdInsertElement_Click() Dim Found As Boolean Dim docXMLDOM As DOMDocument Dim nodChild As IXMLDOMElement Dim nodParent As IXMLDOMElement Dim nodElement As IXMLDOMElement Dim lstVideos As IXMLDOMNodeList Found = False Set docXMLDOM = New DOMDocument docXMLDOM.Load "C:\Exercises\videos13.xml" Set lstVideos = docXMLDOM.getElementsByTagName("title") For Each nodElement In lstVideos If nodElement.Text = "The Day After Tomorrow" Then Set nodChild = docXMLDOM.createElement("category") nodChild.Text = "Drama - Environment" Set nodParent = nodElement.parentNode nodParent.appendChild nodChild docXMLDOM.Save "C:\Exercises\Videos13.xml" Found = True End If Next If Found = False Then MsgBox "There is no element with that value", _ vbOKOnly Or vbInformation, _ "Extensible Markup Language" End If Set docXMLDOM = Nothing End Sub This would produce: <?xml version="1.0" encoding="utf-8" ?> <videos> . . . <video> <title>The Day After Tomorrow</title> <director>Roland Emmerich</director> <length>124 Minutes</length> <format>DVD</format> <rating>PG-13</rating> <category>Drama - Environment</category> </video> . . . </videos>
MSXML makes it possible to programmatically add a new element based on the position of another. For example, you can create a new node before an existing one. To support this operation, the IXMLDOMNodeList interface is equipped with a method named insertBefore. Its syntax is: public Function insertBefore(ByVal newChild As IXMLDOMNodeList, _ ByVal refChild As IXMLDOMNodeList) As IXMLDOMNodeList This method takes two arguments. The first argument is the element you want to create. The second argument is the node that will precede the one you are creating. Consider the following XML file named videos.xml: <?xml version="1.0" encoding="utf-8"?> <videos> <video> <title>The Distinguished Gentleman</title> <director>Jonathan Lynn</director> <length>112 Minutes</length> <format>DVD</format> <rating>R</rating> </video> <video> <title>Her Alibi</title> <director>Bruce Beresford</director> <length>94 Minutes</length> <format>DVD</format> <rating>PG-13</rating> </video> </videos> Imagine you want to add a new element before the second one. Here is an example of how this can be done: Private Sub cmdInsertElement_Click() Dim Found As Boolean Dim docXMLDOM As DOMDocument Dim nodRoot As IXMLDOMElement Dim nodElement As IXMLDOMElement Dim lstVideos As IXMLDOMNodeList Dim nodNewElement As IXMLDOMElement Dim nodReference As IXMLDOMElement ' Initialize the document model Set docXMLDOM = New DOMDocument ' Open the XML document docXMLDOM.Load "C:\Exercises\videos14.xml" ' Get a list of nodes based on the director element Set lstVideos = docXMLDOM.getElementsByTagName("title") ' Check the list of all nodes For Each nodElement In lstVideos ' If you find a video titled Her Alibi, ... If nodElement.Text = "Her Alibi" Then ' ... get a reference to that video Set nodReference = nodElement ' Let the interpreter know that we found a match Found = True ' Get out of the For loop (no need to look further) Exit For End If Next ' Since the video was found If Found = True Then ' Get a reference to the root node Set nodRoot = docXMLDOM.documentElement ' ... start a new node named video Set nodNewElement = docXMLDOM.createElement("video") ' Add the new node before the element titled video nodRoot.insertBefore nodNewElement, nodReference.parentNode ' Save the file docXMLDOM.Save "C:\Exercises\Videos14.xml" End If Set docXMLDOM = Nothing End Sub This would produce: <?xml version="1.0" encoding="utf-8" ?> <videos> <video> <title>The Distinguished Gentleman</title> <director>Jonathan Lynn</director> <length>112 Minutes</length> <format>DVD</format> <rating>R</rating> </video> <video></video> <video> <title>Her Alibi</title> <director>Bruce Beresford</director> <length>94 Minutes</length> <format>DVD</format> <rating>PG-13</rating> </video> </videos> If you want, you can then populate the new node with a value and/or child nodes. Here are examples from the original videos14.xml file: Private Sub cmdInsertElement_Click() Dim docXMLDOM As DOMDocument Dim nodRoot As IXMLDOMElement Dim nodChild As IXMLDOMElement Dim nodElement As IXMLDOMElement Dim lstVideos As IXMLDOMNodeList Dim nodReference As IXMLDOMElement Dim nodNewElement As IXMLDOMElement ' Initialize the document model Set docXMLDOM = New DOMDocument ' Open the XML document docXMLDOM.Load "C:\Exercises\videos14.xml" ' Get a list of nodes based on the director element Set lstVideos = docXMLDOM.getElementsByTagName("title") ' Check the list of all nodes For Each nodElement In lstVideos ' If you find a video titled Her Alibi, ... If nodElement.Text = "Her Alibi" Then ' ... get a reference to that video Set nodReference = nodElement ' Get a reference to the root node Set nodRoot = docXMLDOM.documentElement ' ... start a new node named video Set nodNewElement = docXMLDOM.createElement("video") ' Specify some value for the element nodNewElement.Text = "The video is provided in Blu-ray/DVD Combo." ' Add some child nodes to the new element Set nodChild = docXMLDOM.createElement("title") nodChild.Text = "A Good Day to Die Hard" nodNewElement.appendChild nodChild Set nodChild = docXMLDOM.createElement("director") nodChild.Text = "John Moore" nodNewElement.appendChild nodChild Set nodChild = docXMLDOM.createElement("length") nodChild.Text = "98 minutes" nodNewElement.appendChild nodChild ' Add the new node before the referenced element nodRoot.insertBefore nodNewElement, nodReference.parentNode ' Save the file docXMLDOM.Save "C:\Exercises\Videos14.xml" ' Get out of the For loop (no need to look further) Exit For End If Next Set docXMLDOM = Nothing End Sub This would produce: <?xml version="1.0" encoding="utf-8" ?> <videos> <video> <title>The Distinguished Gentleman</title> <director>Jonathan Lynn</director> <length>112 Minutes</length> <format>DVD</format> <rating>R</rating> </video> <video>The video is provided in Blu-ray/DVD Combo. <title>A Good Day to Die Hard</title> <director>John Moore</Director> <length>98 minutes</length> </video> <video> <title>Her Alibi</title> <director>Bruce Beresford</director> <length>94 Minutes</length> <format>DVD</format> <rating>PG-13</rating> </video> </videos> Of course, you can also add an element before a node that is a child node. Here is an example: Private Sub cmdInsertElement_Click() Dim docXMLDOM As DOMDocument Dim nodElement As IXMLDOMElement Dim lstVideos As IXMLDOMNodeList Dim nodNewElement As IXMLDOMElement ' Initialize the document model Set docXMLDOM = New DOMDocument ' Open the XML document docXMLDOM.Load "C:\Exercises\videos14.xml" ' Get a list of nodes based on the director element Set lstVideos = docXMLDOM.getElementsByTagName("director") ' Check the list of all nodes For Each nodElement In lstVideos ' If you find a director named Jonathan Lynn, ... If nodElement.Text = "Jonathan Lynn" Then ' ... start a new node named actors Set nodNewElement = docXMLDOM.createElement("actors") ' Add the new node before the element named director nodElement.parentNode.insertBefore nodNewElement, nodElement ' Save the file docXMLDOM.Save "C:\Exercises\Videos14.xml" Exit For End If Next Set docXMLDOM = Nothing End Sub This would produce: <?xml version="1.0" encoding="utf-8" ?> <videos> <video> <title>The Distinguished Gentleman</title> <actors></actors> <director>Jonathan Lynn</director> <length>112 Minutes</length> <format>DVD</format> <rating>R</rating> </video> <video> <title>Her Alibi</title> <director>Bruce Beresford</director> <length>94 Minutes</length> <format>DVD</format> <rating>PG-13</rating> </video> </videos> Remember that you can specify the value of an element by assigning a string to its Text property. You can also add child nodes to the new element.
If you have an existing node but that has a wrong child node (probably the name of the child node is wrong) or a child node has a wrong value, you can edit the child node or change the value of the child node(s). This is done by creating a new value and replacing the existing one. To support this operation, the IXMLDOMNodeList interface is equipped with a method named replaceChild. Its syntax is: Public Function replaceChild(ByVal newChild As IXMLDOMNode, _ ByVal oldChild As IXMLDOMNode) As IXMLDOMNode This mehod takes as arguments the new child node that will replace the existing element. Consider the following XML file named videos15.xml <?xml version="1.0" encoding="utf-8" ?> <videos> <video> <title>The Distinguished Gentleman</title> <director>Jonathan Lynn</director> <length>112 Minutes</length> <format>DVD</format> <rating>R</rating> </video> <video>The video is provided in Blu-ray/DVD Combo. <title>A Good Day to Die Hard</title> <director>John Moore</Director> <length>98 minutes</length> </video> <video> <title>Her Alibi</title> <director>Bruce Beresford</director> <length>94 Minutes</length> <format>DVD</format> <rating>PG-13</rating> </video> </videos> Imagine you want to completely replace the video in the middle: A Good Day to Die Hard. Here is an example that replaces an existing node with a new one: Private Sub cmdReplaceElement_Click() Dim docXMLDOM As DOMDocument Dim nodRoot As IXMLDOMElement Dim nodChild As IXMLDOMElement Dim nodElement As IXMLDOMElement Dim lstVideos As IXMLDOMNodeList Dim nodReference As IXMLDOMElement Dim nodNewElement As IXMLDOMElement ' Initialize the document model Set docXMLDOM = New DOMDocument ' Open the XML document docXMLDOM.Load "C:\Exercises\videos15.xml" ' Get a list of nodes based on the director element Set lstVideos = docXMLDOM.getElementsByTagName("title") ' Check the list of all nodes For Each nodElement In lstVideos ' If you find a video titled Her Alibi, ... If nodElement.Text = "A Good Day to Die Hard" Then ' ... get a reference to that video Set nodReference = nodElement ' Get a reference to the root node Set nodRoot = docXMLDOM.documentElement ' ... start a new node named video Set nodNewElement = docXMLDOM.createElement("video") ' Add some child nodes to the new element Set nodChild = docXMLDOM.createElement("title") nodChild.Text = "Indiana Jones and the Kingdom of the Crystal Skull" nodNewElement.appendChild nodChild Set nodChild = docXMLDOM.createElement("director") nodChild.Text = "Stephen Sielvert" nodNewElement.appendChild nodChild Set nodChild = docXMLDOM.createElement("producers") nodChild.Text = "Kathleen Kennedy, George Lucas" nodNewElement.appendChild nodChild Set nodChild = docXMLDOM.createElement("rating") nodChild.Text = "PG-13" nodNewElement.appendChild nodChild ' Add the new node before the referenced element nodRoot.replaceChild nodNewElement, nodReference.parentNode ' Save the file docXMLDOM.Save "C:\Exercises\Videos15.xml" ' Get out of the For loop (no need to look further) Exit For End If Next Set docXMLDOM = Nothing End Sub This would produce: <?xml version="1.0" encoding="utf-8" ?> <videos> <video> <title>The Distinguished Gentleman</title> <director>Jonathan Lynn</director> <length>112 Minutes</length> <format>DVD</format> <rating>R</rating> </video> <video> <title>Indiana Jones and the Kingdom of the Crystal Skull</title> <director>Stephen Sielvert</director> <producers>Kathleen Kennedy, George Lucas</producers> <rating>PG-13</rating> </video> <video> <title>Her Alibi</title> <director>Bruce Beresford</director> <length>94 Minutes</length> <format>DVD</format> <rating>PG-13</rating> </video> </videos> Now consider the following file named videos16.xml: <?xml version="1.0" encoding="utf-8" ?> <videos> <video> <title>The Distinguished Gentleman</title> <director>Jonathan Lynn</director> <length>112 Minutes</length> <format>DVD</format> <rating>R</rating> </video> <video> <title>Indiana Jones and the Kingdom of the Crystal Skull</title> <director>Stephen Sielvert</director> <producers>Kathleen Kennedy, George Lucas</producers> <rating>PG-13</rating> </video> <video> <title>Her Alibi</title> <director>Bruce Beresford</director> <length>94 Minutes</length> <format>DVD</format> <rating>PG-13</rating> </video> </videos> Imagine that the name of the director in the second video as Stephen Sielvert is wrong and you want to edit/change/update it. To do that (programmatically), you would have to replace that string. To do this, you would have to locate the name and replace/change its value. Obviously there are different approaches you can use but the whole technique (of course not the only one) is to call the IXMLDOMNodeList.replaceChild() method after locating the video. Here is one way this can be done: Private Sub cmdReplaceChild_Click() Dim docXMLDOM As DOMDocument Dim nodRoot As IXMLDOMElement Dim nodVideo As IXMLDOMElement Dim nodDirector As IXMLDOMElement Dim lstDirectors As IXMLDOMNodeList ' Initialize the document model Set docXMLDOM = New DOMDocument ' Open the XML document docXMLDOM.Load "C:\Exercises\videos16.xml" ' Get a list of nodes based on the director element Set lstDirectors = docXMLDOM.getElementsByTagName("director") ' Check the list of all nodes For Each nodVideo In lstDirectors ' If you find a video whose director is Stephen Sielvert, ... If nodVideo.Text = "Stephen Sielvert" Then ' Get a reference to the root Set nodRoot = docXMLDOM.documentElement ' Start creating a new node Set nodDirector = docXMLDOM.createElement("director") ' Specify its value nodDirector.Text = "Steven Spielberg" ' Use the new node in place of the old node nodVideo.parentNode.replaceChild nodDirector, nodVideo ' Save the file docXMLDOM.Save "C:\Exercises\Videos16.xml" ' Get out of the For loop (no need to look further) Exit For End If Next Set docXMLDOM = Nothing End Sub This would produce: <?xml version="1.0" encoding="utf-8" ?> <videos> <video> <title>The Distinguished Gentleman</title> <director>Jonathan Lynn</director> <length>112 Minutes</length> <format>DVD</format> <rating>R</rating> </video> <video> <title>Indiana Jones and the Kingdom of the Crystal Skull</title> <director>Steven Spielberg</director> <producers>Kathleen Kennedy, George Lucas</producers> <rating>PG-13</rating> </video> <video> <title>Her Alibi</title> <director>Bruce Beresford</director> <length>94 Minutes</length> <format>DVD</format> <rating>PG-13</rating> </video> </videos> Using the same approach, you can edit/update/change/replace any node or child node or grand-child and/or their values.
If you have a node you don't want or don't need anymore in your XML document, you can delete it. To support this operation, the IXMLDOMNode interface provides a method named removeChild. Its syntax is: Public Function removeChild(ByVal node As IXMLDOMNode) As IXMLDOMNode This method takes as argument the node to delete. If the node exists, it would be deleted and the method would return the node that was deleted. If the node does not exist, nothing would happen. To effectively use this method, you should first locate the particular node you want to delete. You can look for it using any of the logics we have applied so far. Once you find the node, you can then delete it. Consider the following file named videos17.xml: <?xml version="1.0" encoding="utf-8" ?> <videos> <video> <title>The Distinguished Gentleman</title> <director>Jonathan Lynn</director> <length>112 Minutes</length> <format>DVD</format> <rating>R</rating> </video> <video>The video is provided in Blu-ray/DVD Combo. <title>A Good Day to Die Hard</title> <director>John Moore</director> <length>98 minutes</length> </video> <video> <title>Indiana Jones and the Kingdom of the Crystal Skull</title> <director>Steven Spielberg</director> <producers>Kathleen Kennedy, George Lucas</producers> <rating>PG-13</rating> </video> <video> <title>Her Alibi</title> <director>Bruce Beresford</director> <length>94 Minutes</length> <format>DVD</format> <rating>PG-13</rating> </video> </videos> Imagine you want to delete the video titled A Good Day to Die Hard. Here is an example of calling this method to perform the operation: Private Sub cmdDeleteElement_Click() Dim docXMLDOM As DOMDocument Dim nodRoot As IXMLDOMElement Dim nodElement As IXMLDOMElement Dim lstVideos As IXMLDOMNodeList Found = False Set docXMLDOM = New DOMDocument docXMLDOM.Load "C:\Exercises\videos17.xml" Set lstVideos = docXMLDOM.getElementsByTagName("title") For Each nodElement In lstVideos If nodElement.Text = "A Good Day to Die Hard" Then Set nodRoot = docXMLDOM.documentElement nodRoot.removeChild nodElement.parentNode docXMLDOM.Save "C:\Exercises\videos17.xml" Exit For End If Next Set docXMLDOM = Nothing End Sub This would produce: <?xml version="1.0" encoding="utf-8" ?> <videos> <video> <title>The Distinguished Gentleman</title> <director>Jonathan Lynn</director> <length>112 Minutes</length> <format>DVD</format> <rating>R</rating> </video> <video> <title>Indiana Jones and the Kingdom of the Crystal Skull</title> <director>Steven Spielberg</director> <producers>Kathleen Kennedy, George Lucas</producers> <rating>PG-13</rating> </video> <video> <title>Her Alibi</title> <director>Bruce Beresford</director> <length>94 Minutes</length> <format>DVD</format> <rating>PG-13</rating> </video> </videos> Obviously, to delete the first or the last child node of an element, call either the firstChild() or the lastChild() method on the document element. Here is an example that deletes the first child node of the root element: Private Sub cmdDeleteNode_Click()
Dim docXMLDOM As DOMDocument
Dim nodRoot As IXMLDOMElement
Set docXMLDOM = New DOMDocument
docXMLDOM.Load "C:\Exercises\videos17.xml"
' Get a reference to the root element
Set nodRoot = docXMLDOM.documentElement
' Delete the first child node of the root element
nodRoot.removeChild nodRoot.firstChild
docXMLDOM.Save "C:\Exercises\videos17.xml"
Set docXMLDOM = Nothing
End Sub
Using any of these techniques, you can delete any node inside your XML document. Consider the above videos17.xml file. Imagine you want to delete a node named producers in the video titled Kathleen Kennedy, George Lucas. Here is how this can be done: Private Sub cmdDeleteChildNode_Click()
Dim docXMLDOM As DOMDocument
Dim nodProducer As IXMLDOMNode
Dim nodVideo As IXMLDOMElement
Dim lstVideos As IXMLDOMNodeList
Dim lstProducers As IXMLDOMNodeList
Set docXMLDOM = New DOMDocument
docXMLDOM.Load "C:\Exercises\videos17.xml"
' Get a list of all elements named video
Set lstVideos = docXMLDOM.getElementsByTagName("video")
' Visit each node under the root element
For Each nodVideo In lstVideos
' Create a list of all nodes named producers in the current node
Set lstProducers = nodVideo.getElementsByTagName("producers")
' Visit each producer node
For Each nodProducer In lstProducers
' Look for a producer node whose value is Kathleen Kennedy, George Lucas
If nodProducer.Text = "Kathleen Kennedy, George Lucas" Then
' Since we found such a node, delete it
nodVideo.removeChild nodProducer
' Save the updated file
docXMLDOM.Save "C:\Exercises\videos17.xml"
' Stop searching
Exit For
End If
Next
Next
Set docXMLDOM = Nothing
End Sub
This would produce: <?xml version="1.0" encoding="utf-8" ?> <videos> <video> <title>The Distinguished Gentleman</title> <director>Jonathan Lynn</director> <length>112 Minutes</length> <format>DVD</format> <rating>R</rating> </video> <video> <title>Indiana Jones and the Kingdom of the Crystal Skull</title> <director>Steven Spielberg</director> <rating>PG-13</rating> </video> <video> <title>Her Alibi</title> <director>Bruce Beresford</director> <length>94 Minutes</length> <format>DVD</format> <rating>PG-13</rating> </video> </videos> In the same way, you can delete a child of a child of a child node. |
|
|||||||||||||||||||||||
|