C# 使用C读取XML元素
如何在下面的示例xml文件中获取FirstName、LastName和OtherName?我需要使用C从代码后面将它们分配给一个变量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
<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();