使用 C# 读取 XML 元素
本文关键字:元素 XML 读取 使用 | 更新日期: 2023-09-27 18:33:58
如何在下面的示例 xml 文件中获取名字、姓氏和其他名称?我需要使用 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>
您可以使用 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();
将 XML 文档加载到 XmlDocument
类型对象中,并使用XPath
查询 FirstName、LastName 等。
例如
XmlDocument doc = new XmlDocument();
doc.LoadXml(yourXmlstring);
XmlNode firstNameNode = doc.DocumentElement.SelectSingleNode("/PatientRecord/Demographics/Names/cdsd:LegalName/cdsd:FirstName");
string firstName = firstNameNode.InnerText;
下面是阅读 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");
}
有关更多信息,请参见编程指南(LINQ to XML)