【问题标题】:Reading XML elements using C# [duplicate]使用 C# 读取 XML 元素 [重复]
【发布时间】:2014-12-11 03:21:42
【问题描述】:

如何获取以下示例 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>                  

【问题讨论】:

    标签: c# xml c#-4.0


    【解决方案1】:

    您可以使用 ReadXML .net 函数,例如:

    DataSet objDataSet = new DataSet();
    
    objDataSet.ReadXML("@PathofXMLfile", XmlReadMode.InferSchema);
    
    List<object> Names = objDataSet.Tables["FirstName"].AsEnumerable().Select(r => r["Part"]).ToList();
    

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

    【讨论】:

      【解决方案2】:

      将您的 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;
      

      Here's 阅读 XML 文档的分步指南。

      【讨论】:

        【解决方案3】:
        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)

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-07-27
          • 2018-05-21
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多