這是我的要求: 編寫一個程序,接受XML輸入字符串並從中獲取所有節點值。使用命名空間System.XML(不要使用System.XML.Linq)。程序接受一個XML輸入字符串,並從中獲取所有節點值3.
Display &節點值由空格分隔。
例子:如果輸入字符串包含以下字符串:
<Names> <Name> <FirstName>John</FirstName> <LastName>Smith</LastName</Name>
<Name><FirstName>James</FirstName> <LastName>White</LastName></Name></Names>
顯示輸出: 約翰·史密斯詹姆斯·懷特
創建一個類名爲UserProgramCode具有以下靜態方法 公共靜態字符串getnodeByName(字符串輸入1) 創建一個名爲Program的類,它接受輸入並調用UserProgramCode中存在的靜態方法。
而我的代碼是
using System;使用System.Xml的 ;
public class Program{
public static void Main(){
string xmlinput=Console.ReadLine();
UserProgramCode.getnodeByName(xmlinput);
}
}
public class UserProgramCode{
static string ResultName;
public static string getnodeByName(string input1)
{
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml(input1);
string xpath ="Names/Name";
var nodes = xmlDoc.SelectNodes(xpath);
foreach (XmlNode childrenNode in nodes)
{
UserProgramCode.ResultName=childrenNode.SelectSingleNode("/FirstName").InnerText +" "+ childrenNode.SelectSingleNode("/LastName").InnerText;
}
return UserProgramCode.ResultName;
}
}
但我得到空引用Exception.I不知道如何解決這個問題。請幫忙 。我是C#.net的新手。
約翰·史密斯詹姆斯懷特 未處理的異常: System.NullReferenceException:0 在程序:對象沒有在UserProgramCode.getnodeByName(System.String輸入1)[0x00000]在設置到對象 的一個實例。 Main()[0x00000] in:0 [ERROR] FATAL UNHANDLED EXCEPTION:System.NullReferenceException:對象引用未設置爲對象實例 UserProgramCode.getnodeByName(System.String input1)[0x00000] in:0 at Program.Main()[0x00000] in:0
我猜空引用異常是因爲'的SelectSingleNode()'將返回空值,如果確實如此,試圖訪問'.InnerText'將導致此錯誤。如果你使用'?.InnerText',你可以防止它崩潰你的程序,但在你的情況下,你需要弄清楚爲什麼'SelectSingleNode()'返回null。提示:XPath開始處的'/'的行爲與文件系統路徑的行爲類似。 –
有兩個問題:1)在姓氏後面缺少'>'。 2)在路徑中需要一段時間:UserProgramCode.ResultName = childrenNode.SelectSingleNode(「./ FirstName」)。InnerText +「」+ childrenNode.SelectSingleNode(「./ LastName」)。InnerText; – jdweng
[什麼是NullReferenceException,我該如何解決它?]的可能重複(https://stackoverflow.com/questions/4660142/what-is-a-nullreferenceexception-and-how-do-i-fix-it ) – Progman