【问题标题】:XML element not displaying for empty valuesXML 元素不显示空值
【发布时间】:2015-11-16 12:56:39
【问题描述】:

我正在使用 xml 文件通过以下代码导入数据库

CS:

XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(pathPMO + "Data.xml");
XmlNodeList nodeList = xmlDoc.DocumentElement.SelectNodes("/DocumentElement/Profile");
bool insertProfile = false;
foreach (XmlNode node in nodeList)
   {
     strYear = node.SelectSingleNode("Profile_x0020_Year").InnerText;
     strID = node.SelectSingleNode("Profile_x0020_ID").InnerText;
     strLead = node.SelectSingleNode("Profile_x0020_Leader").InnerText;
     insertProfile = ImportProfile(strYear, strID, strLead);
    } 

例如,某些行的配置文件领导者值为空,当我尝试插入它们时,我收到错误object not set to an instance of an object,因为该特定元素在几行中丢失。

谁能建议如何解决这个问题?

【问题讨论】:

    标签: c# asp.net .net xml


    【解决方案1】:

    您应该确保每个 XmlNode 对象都不为空。您可以使用这样的简单方法:

     private string GetXmlNodeString(string nodeName, XmlNode node)
     {
      if(String.IsNullOrWhiteSpace(nodeName))
         return String.Empty;
    
      var singleNode = node.SelectSingleNode(nodeName);
    
      if(singleNode ==null)
         return String.Empty;
    
      return singleNode.InnerText;
    }
    

    然后像这样更改您的代码:

    foreach (XmlNode node in nodeList)
    {
     strYear = GetXmlNodeString("Profile_x0020_Year",node);
     strID =  GetXmlNodeString("Profile_x0020_ID",node);
     strLead = GetXmlNodeString("Profile_x0020_Leader",node);
     insertProfile = ImportProfile(strYear, strID, strLead);
    } 
    

    【讨论】:

    猜你喜欢
    • 2017-02-11
    • 1970-01-01
    • 1970-01-01
    • 2013-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多