Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
嵌套XML序列化C#_C#_Xml - Fatal编程技术网

嵌套XML序列化C#

嵌套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

我需要创建带有序列化的嵌套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> 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;
        }
    }
}