在c#.net中解析xml
本文关键字:xml net | 更新日期: 2023-09-27 18:00:11
我必须在C#中解析以下xml
<Packages>
<Package>
<PackageName>Create_Staging_Table</PackageName>
<SequenceID>1</SequenceID>
<AlwaysRun>True</AlwaysRun>
</Package>
<Package>
<PackageName>Indigo_Staging_Load</PackageName>
<SequenceID>2</SequenceID>
<AlwaysRun>True</AlwaysRun>
</Package>
<Package>
<PackageName>Indiogo_Load_Package</PackageName>
<SequenceID>3</SequenceID>
<AlwaysRun>True</AlwaysRun>
</Package>
</Packages>
我试过
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);
}
我在节点上遇到了类似"对象引用未设置为对象实例"的错误。自节点以来的Attributes.GetNamedItem("PackageName").value。Attributes.GetNamedItem("PackageName")为"null"
由于PackageName不是一个属性,所以您尝试做的操作不会起作用。您必须查看Package的子节点。
最终得到解决方案
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);
}
您正在寻找PackageName,它是节点中的阳极。属性,所以我认为您永远不会得到这个xml的值。这是你的问题吗?