如何在以下示例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>
答案 0 :(得分:0)
将XML文档加载到XmlDocument
类型对象中,并使用XPath
查询FirstName,LastName等。
E.g。
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文档的分步指南。
答案 1 :(得分: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)
答案 2 :(得分:0)
您可以使用ReadXML .net功能,例如:
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();