这一篇文章描述如何修改XML文件中的一个节点。
接上一篇文章,采用bookstore.xml,该文件中现在已经有两个book子节点,现在修改genre属性为comedy的book节点,将该genre属性改为 update comedy,并将该book节点的author子节点的值改为pipi。
1.仍然定义一个读取xml文件的变量:
Dim xmlDoc as New XmlDocument
xmlDoc.Load("bookstore.xml")
2.定义一个xml文件的节点列表:nodelist,获取根节点
Dim nodeList as XmlNodeList =xmlDoc.SelectSingleNode("bookstore").ChildNodes
3.循环查找该节点列表,找出genre属性为comedy的节点:
Dim xnode as XmlNode //申明两个节点变量
Dim xe as XmlElement
For Each xnode In nodeList //vb的foreach循环语句与c#的稍有不同
xe =CType(xnode,XmlElement) //将节点类型转换为XmlEment
if (xe.GetAttribute("genre")="comedy") Then //获取该节点的genre属性值,并与“comedy”比较
xe.SetAttribute("genre","update comedy")
Dim xSubList as XmlNodeList //定义两个变量,为子循环用
Dim xSubNode as XmlNode
xSubList =xe.ChildNodes //获取book节点的所有子节点
For Each xSubNode in xSubList
Dim xeSub as XmlElement =CType(xSubNode, XmlElement)
If (xeSub.Name ="author") Then
xeSub.InnerText ="pipi" //修改该节点的值
Exit For //找到就退出子循环
End If
Next
Exit For //退出大循环
End If
Next
4.忘了最重要的一点了,修改完了还没有保存呢!
xmlDoc.Save("bookstore.xml")
好了,就这些了,以后可以继续扩展。
另外,补充一下,xmlDoc.Load("bookstore.xml")这句很容易出错,下次要找一个通用的打开xml文件的函数。