2016-11-29 4 views
0

Das ist mein xml doc:XML: Hinzufügen von Knoten zwischen dem spezifischen Knoten

<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> 

Ich möchte Ordner Knoten mit 2 Notizen in den Folder Knoten hinzuzufügen.

<Folder> 
    <FolderName>E:\Nikon</FolderName> 
    <Checked>true</Checked> 
    </Folder> 

Jedes Mal, wenn ich/wählen Sie einen Ordner hinzufügen, die man als Knoten in Folder hinzugefügt?

Wie kann ich das tun? Ich habe etwas versucht, das fast gescheitert ist.

dies ist mein Code für zusätzliche Note in Folder Knoten

 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) 

Dank

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 

das für mich funktioniert gut ... ich schätze für jegliche Anregung dank

+0

zeigen, was you've –

+0

Element versucht = <% = _folderPath $%> <%= "true" %> Dim parent = xmlFile ... .FirstOrDefault() parent.Add (Element) xmlFile.Save (PXmlFileName) – user707407

+1

Bitte bearbeiten Sie Ihre Frage mit dem Code, den Sie verwendet haben, es macht es viel lesbarer. Auch nach Ihrem Kommentar zu urteilen, können Sie das Element finden, vor dem es eingefügt werden muss und 'AddBeforeSelf' verwenden. – DrDonut

Antwort

1

Ich schlage vor, Verwenden Sie Append und nicht Add .. wie in diesem Beispiel, das ich online gefunden habe:

' 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) 
+0

funktioniert nicht: (... – user707407

+0

Bitte angeben die Fehlermeldung oder der Teil des Codes, die nicht funktionieren! – Tyler

+0

Ihre Codes erstellen doppelte OrdnerList-Element dann Append-Werte gespeichert Ich möchte Ordnerelement in FolderList-Element jedes Mal – user707407

Verwandte Themen