2009-08-18 28 views
5

El uso de este ejemplo de cómo hago para actualizar un archivo XML usando este ejemplo:¿Cuál es un buen ejemplo para escribir XML usando VB.net 2008

<foo> 
    <n1> 
     <s1></s1> 
     <s2></s2> 
     <s3></s3> 
    </n1> 
    <n1> 
     <s1></s1> 
     <s2></s2> 
     <s3></s3> 
    </n1> 
</foo> 

que se puede leer de ella durante todo el día, pero por la vida de mí parece que no puedo volver a escribirlo en ese formato.

+0

Pertenece en StackOverflow. – Albic

Respuesta

5

El uso de LINQ-to-XML es una excelente manera de hacerlo en VS2008. Estos son algunos enlaces clave:

aquí es un segmento de código VB.NET:

Dim contacts = _ 
    <Contacts> 
     <Contact> 
      <Name>Patrick Hines</Name> 
      <Phone Type="Home">206-555-0144</Phone> 
      <Phone Type="Work">425-555-0145</Phone> 
      <Address> 
       <Street1>123 Main St</Street1> 
       <City>Mercer Island</City> 
       <State>WA</State> 
       <Postal>68042</Postal> 
      </Address> 
     </Contact> 
    </Contacts> 

XML LINQ-a-es realmente simple en VB.NET porque lo trata como un literal XML que hace el LINQ-to-X ML llama detrás de escena. Puede escribir directamente la variable 'contactos' de arriba en un archivo usando su método de escritura.

+0

+1 por incluir un ejemplo simple. –

0

Dado que etiquetó su pregunta con la etiqueta VS2008, supongo que quiere decir VB o C#.

puede probar LINQ to XML: here
o xmlDocument simple: here

buena suerte

0

También podría mirar en serialización XML, para lo cual se podría utilizar algo como:

public class foo 
{ 
    void bar() 
    { 
     System.IO.FileInfo fi = new System.IO.FileInfo("C:\foo.xml") 
     System.Xml.Serialization.XmlSerializer xs = new System.Xml.Serialization.XmlSerializer(typeof(n1)); 
     xs.Serialize(fi.OpenWrite(),new n1()); 
    } 
} 

public class n1 
{ 
    [System.Xml.Serialization.XmlElement()] public string s1 { get; set; } 
    [System.Xml.Serialization.XmlElement()] public string s2 { get; set; } 
    [System.Xml.Serialization.XmlElement()] public string s3 { get; set; } 
} 
10

aproximación directa:

' to create the XmlDocument... ' 
Dim xmlDoc As New Xml.XmlDocument 

Dim fooElement As Xml.XmlElement = xmlDoc.CreateElement("foo") 
xmlDoc.AppendChild(fooElement) 

Dim n1Element As Xml.XmlElement = xmlDoc.CreateElement("n1") 
For Each n1ChildName As String In New String() {"s1", "s2", "s3"} 
    Dim childElement As Xml.XmlElement = xmlDoc.CreateElement(n1ChildName) 
    n1Element.AppendChild(childElement) 
Next 

fooElement.AppendChild(n1Element) 
fooElement.AppendChild(n1Element.CloneNode(deep:=True)) 

' to update the XmlDocument (simple example)... ' 
Dim s1Element As Xml.XmlElement = xmlDoc.SelectSingleNode("foo/n1/s1") 
If Not s1Element Is Nothing Then s1Element.InnerText = "some value" 
+0

Gracias por la respuesta simple. Esto es lo que usé – sparkkkey

0

Esto le puede dar algo para trabajar con ...

Sub Main() 

     Dim oXML As Xml.XmlDocument 
     Dim oNodes As Xml.XmlNode 
     Dim oNode As Xml.XmlNode 
     Dim sFilename As String = "D:\Junk\foo.xml" 

     oXML = New Xml.XmlDocument 
     oXML.Load(sFilename) 

     oNodes = oXML.DocumentElement 

     oNode = oNodes.ChildNodes(0) 
     oNode.Item("s1").InnerText = "Pink Floyd" 
     oNode.Item("s2").InnerText = "Dark Side of the Moon" 
     oNode.Item("s3").InnerText = "1973" 

     oNode = oNodes.ChildNodes(1) 
     oNode.Item("s1").InnerText = "Deep Purple" 
     oNode.Item("s2").InnerText = "Stormbringer" 
     oNode.Item("s3").InnerText = "1974" 

     oXML.Save(sFilename) 

    End Sub 
Cuestiones relacionadas