Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/301.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
C# 如何从复杂的xml嵌套结构中选择xml值?_C#_Xml - Fatal编程技术网

C# 如何从复杂的xml嵌套结构中选择xml值?

C# 如何从复杂的xml嵌套结构中选择xml值?,c#,xml,C#,Xml,我有这个xml数据 <Records> <Person id="1234" action="chg" date="12-Oct-2000"> <Gender>Male</Gender> <ActiveStatus>Active</ActiveStatus> <Deceased>No<

我有这个xml数据

<Records>
      <Person id="1234" action="chg" date="12-Oct-2000">
         <Gender>Male</Gender>
         <ActiveStatus>Active</ActiveStatus>
         <Deceased>No</Deceased>
         <NameDetails>
            <Name NameType="Primary Name">
               <NameValue>
                  <FirstName>Joe</FirstName>
                  <Surname>Doe</Surname>
                  <OriginalScriptName>Joe Doe</OriginalScriptName>
               </NameValue>
            </Name>
            <Name NameType="Spelling Variation">
               <NameValue>
                  <FirstName>John</FirstName>
                  <Surname>Doo</Surname>
               </NameValue>
               <NameValue>
                  <FirstName>Joeh</FirstName>
                  <Surname>Doeh</Surname>
               </NameValue>
               <NameValue>
                  <FirstName>Jay</FirstName>
                  <Surname>Doe</Surname>
               </NameValue>
               <NameValue>
                  <FirstName>Joo</FirstName>
                  <Surname>Doe</Surname>
               </NameValue>
            </Name>         
        </NameDetails>
    </Person>
</Records>  

但是如何为该结构选择
NameDetails
的值呢?

只要将XML粘贴到Visual Studio并选择“粘贴特殊项”,它就会创建所有类。然后反序列化,再简单不过了:

var serializer = new XmlSerializer(typeof(Records));
using TextReader reader = new StreamReader(new FileStream(@"D:\funky.xml", FileMode.Open));

// All your data is there in result
var result = (Records) serializer.Deserialize(reader);
给定的

public class Records
{
   public RecordsPerson Person { get; set; }
}

public class RecordsPerson
{
   public string Gender { get; set; }
   public string ActiveStatus { get; set; }
   public string Deceased { get; set; }
   public RecordsPersonName[] NameDetails { get; set; }    
   public ushort id { get; set; }  
   public string action { get; set; }
   public string date { get; set; }
}

public class RecordsPersonName
{
   public RecordsPersonNameNameValue[] NameValue { get; set; } 
   public string NameType { get; set; }
}

public class RecordsPersonNameNameValue
{
   public string FirstName { get; set; }
   public string Surname { get; set; }
   public string OriginalScriptName { get; set; }
}

xpath是必需的还是可以使用Linq转换XML?谢谢。实际上我已经有了这个模型。现在是从xml文件中读取xml值,然后复制到model@Steve
var result=(记录)序列化程序。反序列化(读取器)是否有办法自动生成所有的
DbSet
?我使用的是实体框架。
public class Records
{
   public RecordsPerson Person { get; set; }
}

public class RecordsPerson
{
   public string Gender { get; set; }
   public string ActiveStatus { get; set; }
   public string Deceased { get; set; }
   public RecordsPersonName[] NameDetails { get; set; }    
   public ushort id { get; set; }  
   public string action { get; set; }
   public string date { get; set; }
}

public class RecordsPersonName
{
   public RecordsPersonNameNameValue[] NameValue { get; set; } 
   public string NameType { get; set; }
}

public class RecordsPersonNameNameValue
{
   public string FirstName { get; set; }
   public string Surname { get; set; }
   public string OriginalScriptName { get; set; }
}