为什么我没有将Exception Object引用设置为对象的实例

时间:2015-02-04 15:44:46

标签: c# string

我有以下方法:

public string GetReadersAsListXML()
    {
        StringBuilder sbXML = new StringBuilder();

        sbXML.Append("<items>" + "\r\n");

        string filePath = ConfigurationManager.AppSettings["RFIDScannerConfiguration"];

        XmlReaderSettings readerSettings = new XmlReaderSettings();
        readerSettings.IgnoreComments = true;

        using (XmlReader reader = XmlReader.Create(filePath, readerSettings))
        {
            while (reader.Read())
            {
                if (reader.NodeType == XmlNodeType.Element)
                {
                    if (reader.LocalName == "add")
                    {
                        int ListenerNumber = 1;

                        string Key = reader.GetAttribute("key");
                        Key = Key.Remove(Key.Length - 3);
                        string Value = reader.GetAttribute("value");

                        if (Key == "Active")
                        {
                            sbXML.Append("<item>" + "\r\n");
                            sbXML.Append("<id>Listener" + ListenerNumber + "</id>" + "\r\n");
                            sbXML.Append("<attributes>" + "\r\n");
                            ListenerNumber++;
                        }

                        sbXML.Append("<attribute>" + "\r\n");
                        sbXML.Append("<code>" + Key + "</code>" + "\r\n");
                        sbXML.Append("<value><![CDATA[" + Value + "]]></value>" + "\r\n");
                        sbXML.Append("</attribute>" + "\r\n");
                    }
                }
            }

        }

        return sbXML.ToString();
    }

我用它来解析XML文件。

我想删除字符串的最后3个字符&#39; Key&#39;。

但是,我收到以下错误:

'Object reference not set to an instance of an object'.

我之前以完全相同的方式使用了.remove方法并且工作正常。

我知道这就是这条线:

Key = Key.Remove(Key.Length - 3);

导致问题,但为什么,它设置正确?

1 个答案:

答案 0 :(得分:0)

Key不是空的吗?当然它是空的。因此,您会收到此错误。

为了避免这种情况,请在删除之前检查:

if(Key!=null && Key.Length>3)
    Key = Key.Remove(Key.Length - 3);