我有以下方法:
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);
导致问题,但为什么,它设置正确?
答案 0 :(得分:0)
Key
不是空的吗?当然它是空的。因此,您会收到此错误。
为了避免这种情况,请在删除之前检查:
if(Key!=null && Key.Length>3)
Key = Key.Remove(Key.Length - 3);