XML ファイルは一般的に使用されるファイル形式です。この記事では主に C# で XML を読み取るための 3 つの実装方法、主に XmlDocument、XmlTextReader、Linq to Xml を紹介します。興味のある方は詳細をご覧ください。
はじめに
XML ファイルは、WinForm の app.config や Web プログラムの web.config ファイルなど、一般的に使用されるファイル形式であり、多くの重要な場所で見つかります。 (Json と同様) Microsoft は、アプリケーションに XML ファイルを保存するのに役立つ一連のクラス ライブラリも提供しています。プログラムで XML ファイルにアクセスして操作するには、通常、次の 2 つのモデルがあります。
DOM (ドキュメント オブジェクト モデル):
ストリーム モデル:
ストリーム モデルは、ストリームの概念を使用して XML ファイルにアクセスするため、この問題を非常にうまく解決します。つまり、メモリ内には常に現在のノードのみが存在しますが、欠点として、読み取り専用かつ前方へのみであり、ドキュメント内で後方ナビゲーション操作を実行することはできません。C# で XML ファイルを読み取る 3 つの方法は次のとおりです:
1. XmlDocument を使用する (DOM モード)
2. XmlTextReader を使用する (ストリーミング モード)
3. Linq to Xml を使用する (Linq モード) )
XmlDocument を使用すると、XML ファイルでは、XML を文書宣言 (Declare)、要素ツリーとして考えることができます。 (Element)、属性 (Attribute)、テキスト (Text) などで構成されます。最初のノードはルート ノードと呼ばれ、ノードを取得した後、各ノードは独自の子ノードを持つことができます。このノードまたはその他のノードの値。属性は、一連の属性またはメソッドを通じて取得できます。例:
xn 代表一个结点 xn.Name;//这个结点的名称 xn.Value;//这个结点的值 xn.ChildNodes;//这个结点的所有子结点 xn.ParentNode;//这个结点的父结点
すべてのデータを読み取る
これを使用する場合は、まず XmlDocument オブジェクトを宣言してから、Load メソッドを呼び出して XML ファイルを読み込みます。
BookModel は書籍モデルです
#region XmlDocument读取 public static void XmlDocumentReadDemo() { //list List<BookModel> bookModeList = new List<BookModel>(); //使用的时候,首先声明一个XmlDocument对象,然后调用Load方法,从指定的路径加载XML文件. XmlDocument doc = new XmlDocument(); XmlReaderSettings settings = new XmlReaderSettings(); settings.IgnoreComments = true;//忽略文档里面的注释 using (XmlReader reader = XmlReader.Create(@"d:/demo.xml", settings)) { doc.Load(reader); //doc.Load(@"d:/demo.xml"); //然后可以通过调用SelectSingleNode得到指定的结点,通过GetAttribute得到具体的属性值.参看下面的代码 // 得到根节点bookstore XmlNode xn = doc.SelectSingleNode("bookstore"); // 得到根节点的所有子节点 XmlNodeList xnl = xn.ChildNodes; foreach (XmlNode xn1 in xnl) { BookModel bookModel = new BookModel(); // 将节点转换为元素,便于得到节点的属性值 XmlElement xe = (XmlElement)xn1; // 得到Type和ISBN两个属性的属性值 bookModel.BookISBN = xe.GetAttribute("ISBN").ToString(); bookModel.BookType = xe.GetAttribute("Type").ToString(); // 得到Book节点的所有子节点 XmlNodeList xnl0 = xe.ChildNodes; bookModel.BookName = xnl0.Item(0).InnerText; bookModel.BookAuthor = xnl0.Item(1).InnerText; bookModel.BookPrice = Convert.ToDouble(xnl0.Item(2).InnerText); bookModeList.Add(bookModel); } } bookModeList.Add(new BookModel()); } #endregion XmlDocument读取
s data の場合、最初に次のように、read() メソッドを使用して継続的に読み取り、ノードの読み取りの種類に応じて対応する操作を実行します。は、C# 3.0 で登場した新機能です。Linq を使用して XML ファイルを操作すると、非常に便利で比較的簡単です。
System.Linq を使用して引用する必要があります。System.Xml.Linq を使用してください。
#region XmlTextReaderDemo public static void XmlTextReaderDemo() { XmlTextReader reader = new XmlTextReader(@"d:/demo.xml"); List<BookModel> modelList = new List<BookModel>(); BookModel model = new BookModel(); while (reader.Read()) { if (reader.NodeType == XmlNodeType.Element) { if (reader.Name == "book") { model.BookType = reader.GetAttribute("Type"); model.BookISBN = reader.GetAttribute("ISBN"); } if (reader.Name == "title") { model.BookName = reader.ReadElementContentAsString(); } if (reader.Name == "author") { model.BookAuthor = reader.ReadElementString().Trim(); } if (reader.Name == "price") { model.BookPrice = Convert.ToDouble(reader.ReadElementString().Trim()); } //for(int i=0;i<reader.AttributeCount;i++) //{ // reader.MoveToAttribute(i); //} } if (reader.NodeType == XmlNodeType.EndElement) { modelList.Add(model); model = new BookModel(); } } reader.Close(); modelList.Add(new BookModel()); } #endregion XmlTextReaderDemo
概要
1. XmlDocument メソッドの利点は、見つけやすいことです
3. www.php.cn)。