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 に答える