xmlのすべての要素と属性を2つの別々の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>