嵌套XML序列化C#
我需要创建带有序列化的嵌套Xml。我有两个列表,其中的数据必须生成按数字过滤的嵌套xml 名单如下:嵌套XML序列化C#,c#,xml,C#,Xml,我需要创建带有序列化的嵌套Xml。我有两个列表,其中的数据必须生成按数字过滤的嵌套xml 名单如下: List<Person> personList = new List<Person>(); personList.Add(new Person{ Number = 1, Name = "Dean" }); personList.Add(new Person{ Number = 2, Name = "Mike" }); List<Home> ho
List<Person> personList = new List<Person>();
personList.Add(new Person{
Number = 1,
Name = "Dean"
});
personList.Add(new Person{
Number = 2,
Name = "Mike"
});
List<Home> homeList= new List<Home>();
homeList.Add(new Home{
Number = 2,
City= "Paris",
State = "France"
});
homeList.Add(new Home{
Number = 1,
City= "London",
State = "England"
});
现在,它首先生成包含所有个人数据的Xml文件,然后生成包含家庭数据的Xml文件
实际产量:
<Person>
<number>1<number>
<name>Dean</name>
</Person>
<Person>
<number>2<number>
<name>Mike</name>
</Person>
<Home>
<number>1</number>
<city>London</city>
<state>England</state>
</Home>
<number>2</number>
<city>Paris</city>
<state>London</state>
</Home>
1.
院长
2.
迈克
1.
伦敦
英格兰
2.
巴黎
伦敦
通缉输出:
<Person>
<number>1<number>
<name>Dean</name>
<Home>
<number>1</number>
<city>London</city>
<state>England</state>
</Home>
</Person>
<Person>
<number>2<number>
<name>Mike</name>
<Home>
<number>2</number>
<city>Paris</city>
<state>France</state>
</Home>
</Person>
1.
院长
1.
伦敦
英格兰
2.
迈克
2.
巴黎
法国
有什么建议吗?你想把某个
家
与人
院长联系起来:
<Person>
<number>1</number>
<name>Dean</name>
<Home>
<number>1</number>
<city>London</city>
<state>England</state>
</Home>
</Person>
在上面的示例中,实体是完全不相关的——您需要以某种方式将它们关联起来
可以关联这些实体的一种方法是在Person
类型上定义Home
属性:
public class Person
{
public string Name { get; set; }
public int Number { get; set; }
public Home Home { get; set; }
}
然后丢弃主页列表
,并将主页
实例分配给个人
实例:
List<Person> personList = new List<Person>();
personList.Add(new Person
{
Number = 1,
Name = "Dean",
Home = new Home
{
Number = 1,
City = "London",
State = "England"
}
});
请记住,如果没有相应的门牌号,
house
属性将保持null
所需输出和实际输出之间的区别是什么?如果希望在输出xml结构中的Person内部有一个元素Home,则需要添加类型为Home to Person类的字段。或者你卡住了什么?是的,这是我想做的,但我想过滤结果,而不是硬编码。示例Home=newhome{if(Home.Number==Person.Number}然后列出所有数据。@PetarS更新了我的答案。这就是你要找的吗?这就是我要找的,我整天都在尝试做同样的事情,但仍然存在将foreach语句放在哪里的问题。@PetarS太棒了。你可以把它放在个人列表
和家庭列表
变量下面。如果这回答了你的问题stion,请将其标记为已接受!
personList.Add(new Person {
Number = 1,
Name = "Dean"
});
homeList.Add(new Home{
Number = 1,
City= "London",
State = "England"
});
public class Person
{
public string Name { get; set; }
public int Number { get; set; }
public Home Home { get; set; }
}
List<Person> personList = new List<Person>();
personList.Add(new Person
{
Number = 1,
Name = "Dean",
Home = new Home
{
Number = 1,
City = "London",
State = "England"
}
});
<personList>
<Person>
<Name>Dean</Name>
<Number>1</Number>
<Home>
<Number>2</Number>
<City>Paris</City>
<State>France</State>
</Home>
</Person>
<Person>
<Name>Mike</Name>
<Number>2</Number>
<Home>
<Number>1</Number>
<City>London</City>
<State>England</State>
</Home>
</Person>
</personList>
foreach (var home in homeList)
{
foreach (var person in personList)
{
if (home.Number == person.Number)
{
person.Home = home;
}
}
}