vb.net追加xml项目

时间:2012-04-11 20:13:07

标签: xml vb.net

我正在尝试将“列”列表附加到此xml文件中:

<?xml version="1.0" encoding="UTF-8"?>
<Conf>
  <name List="A">
    <columns>1</columns>
    <columns>2</columns>
    <columns>3</columns>
    <columns>4</columns>
    <columns>5</columns>
    <columns>6</columns>
  </name>
  <name List="B">
    <columns>1</columns>
    <columns>2</columns>
    <columns>3</columns>
    <columns>4</columns>
    <columns>5</columns>
    <columns>6</columns>
    <columns>9</columns>
  </name>
</Conf>

到目前为止我所拥有的:

 Sub NewNodeInXMLFile(ByVal strPath As String, ByVal PriceList As String, ByVal columns As List(Of String))
        Dim XMLd As New XmlDocument
        XMLd.Load(strPath)
        Dim xmlEl As XmlElement = XMLd.CreateElement("name")
        Dim xmlAttr As XmlAttribute = XMLd.CreateAttribute("List")
        xmlAttr.Value = PriceList
        xmlEl.Attributes.Append(xmlAttr)

        For Each x In columns
            xmlEl.InnerXml = "<columns></columns>"
            xmlEl.Item("columns").InnerText = x
'//what goes in here to append this item?
        Next

        XMLd.DocumentElement.AppendChild(xmlEl)
        XMLd.Save(strPath)
    End Sub

基本上,我知道每件事都不会附加物品;它只是写下列表的最后一个值。有没有办法追加这些物品?

由于

2 个答案:

答案 0 :(得分:1)

试试这个:

For Each x In columns 
    Dim newColumn = XMLd.CreateElement("columns")
    newColumn.Value = x
    xmlEl.AppendChild(newColumn)
Next
xml.GetElementsByTagName("PriceFilesConf")[0].AppendChild(xmlEl);

答案 1 :(得分:0)

您应该使用Linq XElement API。更容易使用。但是用以下代码替换你的循环代码应该有效:

For Each x In columns
  Dim newElement as XmlElement = XMLd.CreateElement("columns")
  newElement.InnerText = x
  xmlEl.AppendChild(newElement)
Next

您还需要更改:

XMLd.DocumentElement.AppendChild(xmlEl) 致:XMLd.AppendChild(xmlEl)