XmlReader を使用して xml データを保存およびロードしたいと考えています。しかし、このクラスの使い方がわかりません。開始用のサンプル コードを教えてください。
32340 次
4 に答える
12
MSDNには、ここから始めるための簡単な例があります。
XmlReaderクラスを特に使用するだけでなく、XMLドキュメントの読み取りと書き込みに興味がある場合は、ここにいくつかのオプションをカバーする素晴らしい記事があります。
しかし、始めて遊んでみたいだけなら、これを試してみてください:
XmlReaderSettings settings = new XmlReaderSettings();
settings.IgnoreWhitespace = true;
settings.IgnoreComments = true;
XmlReader reader = XmlReader.Create("file.xml", settings);
于 2009-05-24T16:57:30.777 に答える
9
個人的には、XML データ ファイルを管理するために XMLReader から System.XML.Linq.XDocument に切り替えました。このようにして、データを xml からオブジェクトに簡単にプルし、プログラム内の他のオブジェクトと同じように管理できます。それらの操作が完了したら、いつでも変更をxmlファイルに保存できます。
//Load my xml document
XDocument myData = XDocument.Load(PhysicalApplicationPath + "/Data.xml");
//Create my new object
HelpItem newitem = new HelpItem();
newitem.Answer = answer;
newitem.Question = question;
newitem.Category = category;
//Find the Parent Node and then add the new item to it.
XElement helpItems = myData.Descendants("HelpItems").First();
helpItems.Add(newitem.XmlHelpItem());
//then save it back out to the file system
myData.Save(PhysicalApplicationPath + "/Data.xml");
このデータを簡単に管理できるデータ セットで使用したい場合は、それをオブジェクトのリストにバインドできます。
List<HelpItem> helpitems = (from helpitem in myData.Descendants("HelpItem")
select new HelpItem
{
Category = helpitem.Element("Category").Value,
Question = helpitem.Element("Question").Value,
Answer = helpitem.Element("Answer").Value,
}).ToList<HelpItem>();
これで、オブジェクト クラスの任意の固有関数を使用して渡したり操作したりできるようになりました。
便宜上、私のクラスには自分自身を xml ノードとして作成する関数があります。
public XElement XmlHelpItem()
{
XElement helpitem = new XElement("HelpItem");
XElement category = new XElement("Category", Category);
XElement question = new XElement("Question", Question);
XElement answer = new XElement("Answer", Answer);
helpitem.Add(category);
helpitem.Add(question);
helpitem.Add(answer);
return helpitem;
}
于 2009-05-25T05:06:33.203 に答える
7
は Factory パターンを使用しているため、を使用Create
する代わりに メソッドを使用する必要があります。new
XmlReader
abstract class
var xmlReader = XmlReader.Create("xmlfile.xml");
于 2009-05-24T16:38:06.400 に答える