在c#.net中解析xml
我必须用C解析以下xml#在c#.net中解析xml,c#,xml,C#,Xml,我必须用C解析以下xml# 我在node.Attributes.GetNamedItem(“PackageName”).value处遇到了类似“Object reference not set to a instance of a Object”的错误,因为node.Attributes.GetNamedItem(“PackageName”)的值为“null”您正在查找PackageName,这是node.Attributes中的一个实例,因此我认为您永远不会获得此xml的值。这是您的问题吗?您
我在node.Attributes.GetNamedItem(“PackageName”).value处遇到了类似“Object reference not set to a instance of a Object”的错误,因为node.Attributes.GetNamedItem(“PackageName”)的值为“null”您正在查找PackageName,这是node.Attributes中的一个实例,因此我认为您永远不会获得此xml的值。这是您的问题吗?您尝试执行的操作将不起作用,因为PackageName不是属性。您必须查看包的子节点。最终得到了解决方案
XmlDocument doc = new XmlDocument();
doc.Load(filePath);
XmlNode PackagesListNode = doc.SelectSingleNode("/Packages");
XmlNodeList Packages = PackagesListNode.SelectNodes("Package");
foreach (XmlNode node in Packages)
{
TableLoadInstruction instruction = new TableLoadInstruction();
instruction.PackageName = node.SelectSingleNode("PackageName").InnerText;
instruction.Sequence = Convert.ToInt16(node.SelectSingleNode("SequenceID").InnerText);
instruction.AlwaysRun = Convert.ToBoolean(node.SelectSingleNode("AlwaysRun").InnerText);
loadInstructions.Add(instruction);
}
你的问题是什么?你应该包括你尝试过什么,遇到了什么具体问题。关于这方面有很多教程。问题是……?很多,关于从XML中提取数据的许多问题已经在这里提出并得到了回答。您应该以注释的形式而不是回答的形式提供此类回答,但是Zebra没有评论的要点,这是一个部分回答。这是一个不完整的问题。只是一个提示:查看XDocument等。要短得多,容易得多。
XmlDocument doc = new XmlDocument();
doc.Load(filePath);
XmlNode PackagesListNode = doc.SelectSingleNode("/Packages");
XmlNodeList Packages = PackagesListNode.SelectNodes("Package");
foreach (XmlNode node in Packages)
{
TableLoadInstruction instruction = new TableLoadInstruction();
instruction.PackageName = node.Attributes.GetNamedItem("PackageName").Value;
instruction.Sequence = Convert.ToInt16(node.Attributes.GetNamedItem("SequenceID").Value);
instruction.AlwaysRun = Convert.ToBoolean(node.Attributes.GetNamedItem("AlwaysRun").Value);
loadInstructions.Add(instruction);
}
XmlDocument doc = new XmlDocument();
doc.Load(filePath);
XmlNode PackagesListNode = doc.SelectSingleNode("/Packages");
XmlNodeList Packages = PackagesListNode.SelectNodes("Package");
foreach (XmlNode node in Packages)
{
TableLoadInstruction instruction = new TableLoadInstruction();
instruction.PackageName = node.SelectSingleNode("PackageName").InnerText;
instruction.Sequence = Convert.ToInt16(node.SelectSingleNode("SequenceID").InnerText);
instruction.AlwaysRun = Convert.ToBoolean(node.SelectSingleNode("AlwaysRun").InnerText);
loadInstructions.Add(instruction);
}