这是我的要求: 编写一个程序,接受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