0

我正在尝试将“列”列表附加到此 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

基本上,我知道 for each 中的内容不会附加该项目;它只是要写入列表的最后一个值。有没有办法附加这些项目?

谢谢

4

2 回答 2

1

试试这个:

For Each x In columns 
    Dim newColumn = XMLd.CreateElement("columns")
    newColumn.Value = x
    xmlEl.AppendChild(newColumn)
Next
xml.GetElementsByTagName("PriceFilesConf")[0].AppendChild(xmlEl);
于 2012-04-11T20:34:11.640 回答
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)

于 2012-04-11T20:40:52.803 回答