Я пытаюсь перечислить все элементы и атрибуты xml в два отдельных объекта List.Как проверить, создан ли объект?
Мне удалось получить все элементы в xml.
Но когда я пытался добавить функциональные возможности, чтобы получить все атрибуты внутри каждого элемента, я всегда сталкиваются System.NullReferenceException: Object reference not set to an instance of an object.
Пожалуйста, ознакомьтесь мой код ниже и сообщить, где я не делаю это правильно. Или есть лучший способ сделать это? Ваши комментарии и предложения будут высоко оценены.
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Windows.Forms;
using System.Xml;
using System.IO;
namespace TestGetElementsAndAttributes
{
public partial class MainForm : Form
{
List<string> _elementsCollection = new List<string>();
List<string> _attributeCollection = new List<string>();
public MainForm()
{
InitializeComponent();
XmlDataDocument xmldoc = new XmlDataDocument();
FileStream fs = new FileStream(@"C:\Test.xml", FileMode.Open, FileAccess.Read);
xmldoc.Load(fs);
XmlNode xmlnode = xmldoc.ChildNodes[1];
AddNode(xmlnode);
}
private void AddNode(XmlNode inXmlNode)
{
try
{
if(inXmlNode.HasChildNodes)
{
foreach (XmlNode childNode in inXmlNode.ChildNodes)
{
foreach(XmlAttribute attrib in childNode.Attributes)
{
_attributeCollection.Add(attrib.Name);
}
AddNode(childNode);
}
}
else
{
_elementsCollection.Add(inXmlNode.ParentNode.Name);
}
}
catch(Exception ex)
{
MessageBox.Show(ex.GetBaseException().ToString());
}
}
}
}
Публикация также образца XML.
<?xml version="1.0" encoding="UTF-8" ?>
<DocumentName1>
<Product>
<Material_Number>21004903</Material_Number>
<Description lang="EN">LYNX GIFT MUSIC 2012 1X3 UNITS</Description>
<Packaging_Material type="25">457</Packaging_Material>
</Product>
</DocumentName1>
убедитесь, что у вас в childNode.Attributes есть значение, не уверенное, если проблема, но 21004903 Material_Number>, похоже, не имеет атрибута –
Используйте отладчик, чтобы узнать какая переменная имеет значение null. –
(Не забудьте закрыть FileStream ...) –