2009-08-18 9 views
5

Stosując ten przykład jak pójdę o aktualizowanie pliku XML za pomocą tego przykładu:Whats dobry przykład napisać XML przy użyciu VB.net 2008

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

mogę czytać z niego przez cały dzień, ale dla życia mnie nie mogę zapisać w tym formacie.

+0

Należy na StackOverflow. – Albic

Odpowiedz

5

Używanie LINQ-to-XML to świetny sposób na zrobienie tego w VS2008. Oto kilka kluczowych linki:

Oto segment kodu 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> 

LINQ-to-XML jest naprawdę proste w VB.NET, ponieważ traktuje to jako literał XML, który robi LINQ-to-X ML dzwoni za kulisami. Możesz bezpośrednio zapisać zmienną "kontakty" powyżej do pliku, używając metody zapisu.

+0

+1 za dodanie prostego przykładu. –

0

Od czasu, gdy oznaczyłeś swoje pytanie tagiem VS2008, domyślam się, że masz na myśli VB lub C#.

można spróbować LINQ do xml: here
lub prosty xmlDocument: here

powodzenia

0

Można również zajrzeć do serializacji XML, dla których można użyć coś takiego:

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

Bezpośrednie podejście:

' 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

Dzięki za prostą odpowiedź. Właśnie tego użyłem. – sparkkkey

0

To może dać ci coś do pracy z ...

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 
Powiązane problemy