从xml获取数据

时间:2017-12-25 11:59:37

标签: c# xml

我想获得<SNILS>节点:

     <ArrayOfEmployee xmlns=""
     xmlns:i="http://www.w3.org/2001/XMLSchema-instance" version="2.0.11"
     formatVersion="2.0" system="ARM">  
 <Employee>
            <AdditionalLaborAgreement i:nil="true" />   <CertificateEducationList>
          <Document>    <SNILS>1111111111111</SNILS>
          </Document> 
 </CertificateEducationList>    
      </Employee>

代码:

 XmlNodeList nodes = xml.GetElementsByTagName("Employee");    
        XmlNode node = xml.SelectSingleNode("SVED_PR_GS/ZGLV/FILENAME");
        int Count = 2;
        foreach (XmlNode n in nodes)
        {
            XmlNode smr_vsi = n.SelectSingleNode("SNILS");
            Console.WriteLine(n.SelectSingleNode(smr_vsi.InnerText));
        }

错误:Console.WriteLine(n.SelectSingleNode(smr_vsi.InnerText));

  

对象引用不指向对象的实例。

1 个答案:

答案 0 :(得分:1)

您的XML格式错误。缺少</ArrayOfEmployee>元素。

您可以通过以下两种方式之一获得所需的节点:

// Provide full XPath
XmlNode smr_vsi = n.SelectSingleNode("CertificateEducationList/Document/SNILS");

//Provide find on any path hint.
XmlNode smr_vsi = n.SelectSingleNode("//SNILS");

但是,在使用之前请检查null

if(smr_vsi != null)
   Console.WriteLine(smr_vsi.InnerText);