XML : 在特定节点之间添加节点
Posted
技术标签:
【中文标题】XML : 在特定节点之间添加节点【英文标题】:XML : Add Nodes in between the specific Node 【发布时间】:2016-11-29 08:51:38 【问题描述】:这是我的 xml 文档:
<FolderSettings>
<quantity>0</quantity>
<FolderList>
<Folder>
<FolderName>E:\05.09.2016</FolderName>
<Checked>true</Checked>
</Folder>
<Folder>
<FolderName>E:\100CANON</FolderName>
<Checked>true</Checked>
</Folder>
<Folder>
<FolderName>G:\Sony</FolderName>
<Checked>true</Checked>
</Folder>
</FolderList>
我想将带有 2 个注释的文件夹节点添加到 FolderList 节点中。
<Folder>
<FolderName>E:\Nikon</FolderName>
<Checked>true</Checked>
</Folder>
每次我选择/添加一个文件夹时,哪个文件夹会作为节点添加到 FolderList 中?
我该怎么做?我尝试了一些几乎失败的方法。
这是我在 FolderList 节点中添加注释的代码
Dim xmlFile = XDocument.Load(PXmlFileName)
Dim element = <Folder>
<FolderName><%= _folderPath$ %></FolderName>
<Checked><%= "true" %></Checked>
</Folder>
Dim parent = xmlFile...<FolderList>.FirstOrDefault()
parent.Add(element)
xmlFile.Save(PXmlFileName)
谢谢
Public Function UpdateFolderListsIntoXML(_folderPath$) As Boolean
Dim _xdoc As New XDocument()
Try
'Loading:
_xdoc = XDocument.Load(PXmlFileName)
Dim _lamIsElementExists = Function(_elementName$)
Dim _folderlistElement As XElement
Try
_folderlistElement = _xdoc.Root.Element(_elementName$)
If Not IsNothing(_folderlistElement) Then
Return True
Else
Return False
End If
Catch ex As Exception
Return False
Finally
_folderlistElement = Nothing
End Try
End Function
If _lamIsElementExists("FolderList") = False Then
'create FolderList element
_xdoc.Root.Element("FolderSettings").Add(<FolderList>
</FolderList>)
_xdoc.Save(PXmlFileName)
'After Create "FolderList" Element loading xml file again
_xdoc = XDocument.Load(PXmlFileName)
End If
'Add New Path into FolderList Element
Dim element = <Folder>
<FolderName><%= _folderPath$ %></FolderName>
<Checked><%= "true" %></Checked>
</Folder>
Dim parent = _xdoc...<FolderList>.FirstOrDefault()
parent.Add(element)
_xdoc.Save(PXmlFileName)
Return True
Catch ex As Exception
PeX = ex
Return False
Finally
_xdoc = Nothing
End Try
End Function
这对我来说很好......我感谢任何建议谢谢
【问题讨论】:
展示你的尝试 element =AddBeforeSelf
您的代码对我有用。你到底是什么问题?
omg :O ... 非常感谢.. 请将 FolderList 节点删除到 xml 文档中,然后请尝试
【参考方案1】:
我建议你使用 Append 而不是 Add.. 就像我在网上找到的这个例子一样:
' create new instance of XmlDocument
Dim doc As New XmlDocument()
' load from file
doc.Load(filename)
' create node and add value
Dim node As XmlNode = doc.CreateNode(XmlNodeType.Element, "FolderList", Nothing)
'node.InnerText = "this is new node";
' create title node
Dim nodeTitle As XmlNode = doc.CreateElement("FolderName")
'add value for it
nodeTitle.InnerText = "G:\Sony"
' create Url node
Dim nodeUrl As XmlNode = doc.CreateElement("Checked")
nodeUrl.InnerText = "True"
' add to parent node
node.AppendChild(nodeTitle)
node.AppendChild(nodeUrl)
' add to elements collection
doc.DocumentElement.AppendChild(node)
' save back
doc.Save(filename)
【讨论】:
请提供错误信息或不工作的部分代码! 您的代码会创建重复的 FolderList 元素,然后存储附加值我想每次都将 Folder 元素添加到 FolderList 元素中 此代码只是一个示例,您必须根据需要进行编辑。这里设置父节点Dim node As XmlNode
感谢您的提示最后我将代码更改为正常工作但未优化我现在更新了我的问题
不客气!如果我帮助了你,请点击我答案左侧“上下投票”下方的绿色对勾! ;)以上是关于XML : 在特定节点之间添加节点的主要内容,如果未能解决你的问题,请参考以下文章