程序接受一个XML输入字符串,并从中获取所有节点值3.
这是我的要求: 编写一个程序,接受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
回答:
我在这里看到多个问题:
你输入XML的格式不正确。您应该尝试捕获,而LoadXml作为用户可以输入任何内容来破坏您的代码。
Smith</LastName
“>
”已丢失。/
前面的节点名称/FirstName
将使它从当前节点的根开始搜索。指定给ResultName只会保留最后一个节点的名和姓,并放弃所有其他节点。
使用字符串连接会导致浪费的堆。
命名约定与C#标准不匹配。
更新的样本:
public class UserProgramCode {
static StringBuilder resultName = new StringBuilder();
public static string GetNodeByName(string input1)
{
XmlDocument xmlDoc = new XmlDocument();
try
{
xmlDoc.LoadXml(input1);
}
catch (XmlException xe)
{
Console.WriteLine("Input XML is not parseable. " + xe.Message);
}
string xpath = "Names/Name";
var nodes = xmlDoc.SelectNodes(xpath);
foreach (XmlNode childrenNode in nodes)
{
resultName.AppendLine(childrenNode.SelectSingleNode("FirstName").InnerText + " " + childrenNode.SelectSingleNode("LastName").InnerText);
}
return resultName.ToString();
}
}
以上是 程序接受一个XML输入字符串,并从中获取所有节点值3. 的全部内容, 来源链接: utcz.com/qa/260028.html