C# linq到xml文档的特定部分
我正在处理一个XML文档,并提取其中的特定部分来创建一个新对象。我已经处理了导航到文档编号和日期(分别是appNumber和appDate属性)的问题。但是,我无法找到申请人的姓名 通过在运行时查看局部变量,我可以看到我已经成功地导航到了正确的元素,但是我似乎无法从中获得名称值C# linq到xml文档的特定部分,c#,xml,linq,C#,Xml,Linq,我正在处理一个XML文档,并提取其中的特定部分来创建一个新对象。我已经处理了导航到文档编号和日期(分别是appNumber和appDate属性)的问题。但是,我无法找到申请人的姓名 通过在运行时查看局部变量,我可以看到我已经成功地导航到了正确的元素,但是我似乎无法从中获得名称值 var myCase = from theCases in allCasesXML.Descendants("exchange-document") select new case_
var myCase = from theCases in allCasesXML.Descendants("exchange-document")
select new case_
{
appNumber = (string)theCases.Element("bibliographic-data").Element("application-reference").Element("document-id").Element("doc-number"),
appDate = (from p in theCases.Descendants("application-reference").Descendants("document-id")
where ((string)p.Attribute("document-id-type") == "epodoc") && (p.Element("date") != null)
select (p.Element("date").Value)).FirstOrDefault(),
applicant = (string)(from q in theCases.Descendants("applicants").Descendants("applicant")//.Descendants("applicant-name")
where ((string)q.Attribute("data-format") == "original") && (q.Element("name") != null)
select (q.Descendants("name")).FirstOrDefault().Value.FirstOrDefault())
// title = "",
// pubNumber = "",
// pubDate = ""
};
这就提供了答案:
applicant = (from q in theCases.Descendants("applicants").Descendants("applicant")//.Descendants("applicant-name")
where ((string)q.Attribute("data-format") == "original")// && (q.Element("name") != null)
select q.Value).FirstOrDefault()
为什么不将它反序列化为一个对象呢?您可以使用VS“Paste special”功能来获取XML结构的类表示,该类表示已准备好进行反序列化。您可以避免可怕的LINQ到XML查询,并开始使用强类型对象。