• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 234
  • Last Modified:

vb.net XML edit in form..

Hello.. I have some problem. Start from the beginning..

I have XML-File


looks like this...


<?xml version="1.0" encoding="utf-8"?>
<tagdata>
  <readopcvalues>
    <value opctag="TEST.AI_Weight_KL3" />
    <value opctag="TEST._produktion" />
    <value opctag="SystemVariables.ServerTime" />
  </readopcvalues>
</tagdata>



What I would like to do first is have the change to add some new tags to my taglist..

tex. add this..

<value opctag="TEST.Goood" />


<?xml version="1.0" encoding="utf-8"?>
<tagdata>
  <readopcvalues>
    <value opctag="TEST.AI_Weight_KL3" />
    <value opctag="TEST._produktion" />
    <value opctag="SystemVariables.ServerTime" />
    <value opctag="TEST.Goood" />
  </readopcvalues>
</tagdata>




I have done this with this code but dosent get really waht I want.. The problem is that I always starts a new nodes and not write in the old one...

look


<?xml version="1.0" encoding="utf-8"?>
<tagdata>
  <readopcvalues>
    <value opctag="TEST.AI_Weight_KL3" />
    <value opctag="TEST._produktion" />
    <value opctag="SystemVariables.ServerTime" />
   </readopcvalues>
  <value opctag="TEST.Goood" />
</tagdata>




This is the code...

   '-- Declare local variable and load xml file
        Dim doc2 As New XmlDocument()
        doc2.Load("XML\TagData.xml")

        '-- Create a new node and add it to the document.
        Dim newline As XmlElement = doc2.CreateElement("value")

        newline.SetAttribute("opctag", "PLC.Beijer_Agnesberg.OP_Dagens_produktion")

        doc2.DocumentElement.AppendChild(newline)
        '-- Save the xml file with the new changes.
        doc2.Save("XML\TagData.xml")



Please give me some tips.. My follow question is that I wolud like to show the Whole XML lines in textboxes..
like this.

textbox1.text =  <value opctag="TEST.Goood" />
textbox2.text =    <value opctag="TEST.AI_Weight_KL3" />

Why I want this it´s because I wolud like to edit the old line.. or add a new line.. or remove one..
I hope someone understand! But first we take the easy party to write in the same nod! :D

//Kavvis
0
kavvis
Asked:
kavvis
  • 6
  • 5
1 Solution
 
kavvisAuthor Commented:
Arun  thank you but I really dont know how to use this info into my code....
any other idees?
0
 
nmarunCommented:
This is what I'm talking.

Arun

private static void UpdateXml()
{
    string xmlPath = @"C:\Arun\Projects\ConsoleTest\ConsoleTest\Response.xml";

    DataSet dataSet = new DataSet();
    dataSet.ReadXml(xmlPath);
    dataSet.AcceptChanges();
    // <value opctag="TEST.Goood" />
    DataRow readopcvaluesRow = dataSet.Tables["readopcvalues"].Rows[0];
    DataRow newRow = dataSet.Tables["value"].NewRow();
    newRow["opctag"] = "Test.Gooood";
    dataSet.Tables["value"].Rows.Add(newRow);
    newRow.SetParentRow(readopcvaluesRow);
    dataSet.WriteXml(xmlPath, XmlWriteMode.IgnoreSchema);
}

Open in new window

0
Concerto Cloud for Software Providers & ISVs

Can Concerto Cloud Services help you focus on evolving your application offerings, while delivering the best cloud experience to your customers? From DevOps to revenue models and customer support, the answer is yes!

Learn how Concerto can help you.

 
nmarunCommented:
And here's the vb.net version.

Arun

Private Shared Sub UpdateXml()
	Dim xmlPath As String = "C:\Arun\Projects\ConsoleTest\ConsoleTest\Response.xml"

	Dim dataSet As New DataSet()
	dataSet.ReadXml(xmlPath)
	dataSet.AcceptChanges()
	' <value opctag="TEST.Goood" />
	Dim readopcvaluesRow As DataRow = dataSet.Tables("readopcvalues").Rows(0)
	Dim newRow As DataRow = dataSet.Tables("value").NewRow()
	newRow("opctag") = "Test.Gooood"
	dataSet.Tables("value").Rows.Add(newRow)
	newRow.SetParentRow(readopcvaluesRow)
	dataSet.WriteXml(xmlPath, XmlWriteMode.IgnoreSchema)
End Sub

Open in new window

0
 
kavvisAuthor Commented:
Arun

OJ!! Thank you! Verry mutch!
It works greate!

Can I somehow remove on of lines tags in some simple way to?

I will give you the points just want to know some more info if you have before I close it! :D
/kavvis

0
 
nmarunCommented:
And here's the second part of your question.

Arun

Private Shared Sub ReadInnerXml()
	Dim xmlPath As String = "C:\Arun\Projects\ConsoleTest\ConsoleTest\Response.xml"

	Dim xDocument__1 As XDocument = XDocument.Load(xmlPath)

	Dim valueXmlList As List(Of String) = (From value In xDocument__1.Descendants("value")value.ToString()).ToList()

	For i As Integer = 0 To valueXmlList.Count - 1
		Console.WriteLine(valueXmlList(i))
	Next
End Sub

Open in new window

0
 
kavvisAuthor Commented:
nmarun:  I can´t really get that to work my friend...
0
 
nmarunCommented:
Try this.

Arun

Private Shared Sub RemoveXmlNode()
	Dim xmlPath As String = "C:\Arun\Projects\ConsoleTest\ConsoleTest\Response.xml"

	Dim dataSet As New DataSet()
	dataSet.ReadXml(xmlPath)
	dataSet.AcceptChanges()
	' <value opctag="TEST.Goood" />

	For i As Integer = 0 To dataSet.Tables("value").Rows.Count - 1
		If dataSet.Tables("value").Rows(i)("opctag").Equals("Test.Gooood") Then
			dataSet.Tables("value").Rows(i).Delete()
			dataSet.Tables("value").Rows(i).AcceptChanges()
		End If
	Next

	dataSet.WriteXml(xmlPath, XmlWriteMode.IgnoreSchema)
End Sub

Open in new window

0
 
nmarunCommented:
What are you getting?

Arun
0
 
kavvisAuthor Commented:
Sorry it was my bad!
that line worked perfekt!

Can I ask one more question..

If I want to show   " <value opctag="Test.Gooood" /> "  in a textbox

just to show all the lines... so I can se what the diffrent rows I have...
so I can delete or replace one of the line easy...

How do I do that the best way?

I have tried to make the whole XML dokumet to a long string and then
like this

textbox1.text = doc.tostring.substring(0.10)
textbox2.text = doc.tostring.substring(23.34)

but that dosent work.. so please tips me then I can close this question and give booth points! :D
0
 
kavvisAuthor Commented:
Thank you!
everythin works very well now!
0

Featured Post

Free Tool: IP Lookup

Get more info about an IP address or domain name, such as organization, abuse contacts and geolocation.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

  • 6
  • 5
Tackle projects and never again get stuck behind a technical roadblock.
Join Now