2014-12-11 81 views
0

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

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

回答

0

可以使用.NET ReadXML的功能,如:

DataSet objDataSet = new DataSet(); 

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

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

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

0

加载XML文档到XmlDocument型对象,并使用XPath查询的名字,姓氏等

例如

XmlDocument doc = new XmlDocument(); 
doc.LoadXml(yourXmlstring); 

XmlNode firstNameNode = doc.DocumentElement.SelectSingleNode("/PatientRecord/Demographics/Names/cdsd:LegalName/cdsd:FirstName"); 

string firstName = firstNameNode.InnerText; 

Here's一步一步地指导读取XML文档。

0
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"); 
} 

更多信息,请参阅Programming Guide (LINQ to XML)