2011-09-05 74 views
0

我有一个用户输入屏幕,用户输入相关的名称和编号。输出xml预计是C#XML列表<int>

<Names> 
    <Name>XYX</Name> 
    <Asso> 
     <Num>1</Num> 
     <Num>1</Num> 
     <Num>1</Num> 
     <Num>1</Num> 
     <Num>1</Num> 
     <Num>1</Num> 
     <Num>1</Num> 
     <Num>1</Num> 
     <Num>1</Num> 
    </Asso> 
</Names> 

由于有很多<Name>标签。我创建了一个类来存储像

public class Name{public string Name;public list<int> Num;} 

值,同时宣布说,Name[] instance = new Name[10];,为班级的11实例。 我使用Num值和Name来设置实例[0],实例[1]的值。

而当我试着打印出XML,而使用

foreach (Name allintance in instance)编写的XML文件。我有正确的名称值,但Num值不写入(它唯一的空标签)。

请让我知道最新的问题..也让我知道哪里有更好的方法。

@Added信息 类文件

public class Name { 
    public Name() 
    { 
     Num = new List<int>(); 
    } 
    public string Name { get; set; } 
    public List<int> Num { get; set; } 
} 

和用于分配值的代码是

     instance[0] = new Name(); 
        instance[0].Name = textbox_Name.Text.ToString(); 
        instance[0].Num = NumList; 

我已经定义了NumList作为List<int>并加入整型值i。从形式得到。

而且写出来的XML文件

我使用的XmlWriter和附加每个名称还有相关的民值作为上述标签。我的问题是通过这种方法,我能够获得XML标签中的名称条目。但是Num标签会导致空标签。

+1

什么问题了吗?目前尚不清楚。 – BrokenGlass

+0

尽管您并不是在说如何获取XML,但我假设您使用的是XML序列化。 – TheVillageIdiot

+0

我没有使用序列化..只是XMLwriter,并试图从类实例中倾倒出值.. – Mullaly

回答

1

试试这个:

[Serializable] 
public class Name 
{ 
    public Name() 
    { 
     Num=new List<int>(); 
    } 

    [XmlAttribute("Name")] 
    public string Name{get;set;} 

    [XmlArray("Num")] 
    public List<int> Num{get;set;} 
} 

生成XML:

private void GetXML(Name n) 
{ 
    var xmlsr=new XmlSerialize(typeof(Name)); 
    var ms=new MemoryStream(); 
    var tr = new XmlTextWriter(ms,Encoding.Unicode); 
    xmlsr.Serialize(tr,n); 
    var sb=new StringBuilder(Encoding.Unicode.GetString(ms.ToArray())); 
    Console.WriteLine(sb.ToString());//xml for object n 
} 
+0

感谢您的回答,但不幸的是我想要这样的东西..用户输入文本框中的“名称”和字段,为每个名称输入适当的Num条目。 Num条目也填充在文本框中。现在的规则是,可以有尽可能多的条目作为“名称”,但总的Num条目(为每个“名称”添加Num条目)应该是64.因此,我需要在生成之前验证所有的名称条目XML标签。 – Mullaly