Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/259.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# 使用C读取XML元素_C#_Xml_C# 4.0 - Fatal编程技术网

C# 使用C读取XML元素

C# 使用C读取XML元素,c#,xml,c#-4.0,C#,Xml,C# 4.0,如何在下面的示例xml文件中获取FirstName、LastName和OtherName?我需要使用C从代码后面将它们分配给一个变量 <PatientRecord> <Demographics> <Names> <cdsd:LegalName namePurpose="L"> <cdsd:Firs

如何在下面的示例xml文件中获取FirstName、LastName和OtherName?我需要使用C从代码后面将它们分配给一个变量

  <PatientRecord>
      <Demographics>
              <Names>
                     <cdsd:LegalName namePurpose="L">
                               <cdsd:FirstName>
                                     <cdsd:Part>SARAH</cdsd:Part>
                                     <cdsd:PartType>GIV</cdsd:PartType>
                               </cdsd:FirstName>
                               <cdsd:LastName>
                                      <cdsd:Part>GOMEZ</cdsd:Part>
                                      <cdsd:PartType>FAMC</cdsd:PartType>
                               </cdsd:LastName>
                               <cdsd:OtherName>
                                       <cdsd:Part>GABRIELA</cdsd:Part>
                                       <cdsd:PartType>GIV</cdsd:PartType>
                               <cdsd:PartQualifier>BR</PartQualifier>                  

将XML文档加载到XmlDocument类型对象中,并使用XPath查询FirstName、LastName等

例如

阅读XML文档的分步指南

XDocument xml = XDocument.Load(stream);
var legalNames = xml.Root
                    .Elements("Demographics")
                    .Elements("Names")
                    .Elements("LegalName");
foreach(XElement ln in legalNames)
{
    string firstName = (string)ln.Element("FirstName");
    // or you can get (string)ln.Element("FirstName").Element("Part");
    string lastName = (string)ln.Element("LastName");
    string otherName = (string)ln.Element("OtherName");
}

有关更多信息,请参见

您可以使用ReadXML.net函数,例如:

DataSet objDataSet = new DataSet();

objDataSet.ReadXML("@PathofXMLfile", XmlReadMode.InferSchema);

List<object> Names = objDataSet.Tables["FirstName"].AsEnumerable().Select(r => r["Part"]).ToList();
这应该将同一标记结构中的所有数据行(即:SARAH)应用到对象列表中,然后可以使用循环获取每个值或指定名称[x]以检索特定索引中的值。注意:我不确定ReadXML函数是否会删除标记前缀cdsd:,或者是否需要在lambda表达式中包含该前缀,即:List Names=objDataSet.Tables[cdsd:FirstName].AsEnumerable.Selectr=>r[cdsd:Part].ToList

DataSet objDataSet = new DataSet();

objDataSet.ReadXML("@PathofXMLfile", XmlReadMode.InferSchema);

List<object> Names = objDataSet.Tables["FirstName"].AsEnumerable().Select(r => r["Part"]).ToList();