2011-11-21 56 views
1

我是一名xml和.net初學者開發人員。我有一系列checkboxlists,我想根據用戶選擇生成一個xml文件。我想XML文件是這樣的。循環複選框列表並使用XMLTextWriter創建XML VB.net

<?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 

回答

0

您需要將您的類別元素創建搬出循環:

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() 
+0

感謝這麼多.. Competent_tech先生。我想我得到了它使:d – lawphotog

+0

這真是個好消息!既然它確實回答了你的問題,你可以點擊答案旁邊的複選標記,讓未來的訪問者知道它解決了你的問題嗎?謝謝 –