Зацикливание чекбокса и создание XML с использованием XMLTextWriter VB.net - PullRequest
1 голос
/ 21 ноября 2011

Я начинающий разработчик с xml и .net.У меня есть серия списков флажков, и я хочу создать XML-файл в зависимости от выбора пользователя.Я хочу, чтобы XML-файл был таким.

<?xml version="1.0" encoding="utf-8"?>
  <FILTER xmlns:x="urn:1">
    <CATEGORY Name="Year">
      <SELECTED Value="2011/2010" />
      <SELECTED Value="2010/2009" />
      <SELECTED Value="2009/2008" />
    </CATEGORY>
    <CATEGORY Name="Grade">
      <SELECTED Value="Kindergarten 1" />
    </CATEGORY>   
  </FILTER>

Но я получаю только это

<?xml version="1.0" encoding="utf-8"?>
  <FILTER xmlns:x="urn:1">
    <CATEGORY Name="Year">
      <SELECTED Value="2011/2010" />
    </CATEGORY>
    <CATEGORY Name="Year">
      <SELECTED Value="2010/2009" />
    </CATEGORY>
    <CATEGORY Name="Year">
      <SELECTED Value="2009/2008" />
    </CATEGORY>
    <CATEGORY Name="Grade">
      <SELECTED Value="Kindergarten 1" />
    </CATEGORY>
  </FILTER>

Это код VB, который я использую для создания XML-файла.Пожалуйста, скажите мне, что мне не хватает.Большое спасибо за помощь.

Dim itemacademicyear As ListItem
Dim itemgrade As ListItem

Dim w As New XmlTextWriter(Server.MapPath("items.xml"), Encoding.UTF8)
w.Formatting = Formatting.Indented
w.WriteStartDocument()
w.WriteStartElement("FILTER")
w.WriteAttributeString("xmlns", "x", Nothing, "urn:1")

For Each itemacademicyear In cblacademicyear.Items
  If itemacademicyear.Selected = True Then
    lblselected.Text = lblselected.Text & itemacademicyear.Text & "&nbsp;" & "<a href='#'>remove</a>" & "<BR>"

    'xml bit
    w.WriteStartElement("CATEGORY")
    w.WriteAttributeString("Name", "Year")
    w.WriteStartElement("SELECTED")
    w.WriteAttributeString("Value", itemacademicyear.Text)
    w.WriteEndElement()
    w.WriteEndElement()
  End If
Next

1 Ответ

0 голосов
/ 21 ноября 2011

Вам необходимо вывести создание элемента категории из цикла:

w.WriteStartElement("CATEGORY")
w.WriteAttributeString("Name", "Year")

For Each itemacademicyear In cblacademicyear.Items
    If itemacademicyear.Selected = True Then
        lblselected.Text = lblselected.Text & itemacademicyear.Text & "&nbsp;" & "<a href='#'>remove</a>" & "<BR>"

        'xml bit
        w.WriteStartElement("SELECTED")
        w.WriteAttributeString("Value", itemacademicyear.Text)
        w.WriteEndElement()

    End If
Next

w.WriteEndElement()
...