2009-08-18 1 views
5

Используя этот пример, как бы я идти об обновлении файла XML с помощью этого примера:Что хороший пример, чтобы написать XML с помощью VB.net 2008

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

Я могу читать из него в течение всего дня, но и для жизни Мне кажется, я не могу записать его обратно в этот формат.

+0

Принадлежит на StackOverflow. – Albic

ответ

5

Использование LINQ-to-XML - отличный способ сделать это в VS2008. Вот некоторые ключевые ссылки:

Вот фрагмент кода 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 к XML действительно простой в VB.NET, потому что он рассматривает его как XML-литерал, который выполняет LINQ-to-X ML звонит за кулисами. Вы можете напрямую написать переменную «контакты» выше в файл, используя метод записи.

+0

+1 для включения простого примера. –

0

Поскольку вы отметили свой вопрос с помощью тега VS2008, я думаю, вы имеете в виду VB или C#.

вы можете попробовать LINQ к XML: here
или простой XMLDOCUMENT: here

удачи

0

Вы также можете посмотреть в XML сериализации, для которого вы могли бы использовать что-то вроде:

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

Простой подход:

' 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

Спасибо за простой ответ. Это то, что я использовал. – sparkkkey

0

Это может дать вам то, чтобы работать с ...

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