从Xml文件帮助中读取

时间:2010-06-29 11:06:33

标签: c#

我有这样的Xml文件:

<store>
  <book id="A1" name="WEB" price="10"/>
  <book id="b1" name="C#" price="15"/>
  <book id="c1" name="DOT" price="12"/>
  <book id="d1" name="JAVA" price="20"/>
  <book id="e1" name="C" price="13"/>
 </store>

我有书想知道如果新书需要创建新元素和默认ID,我想获得书名和价格。请帮帮我

我正在使用.Net 2.0 c sharp

2 个答案:

答案 0 :(得分:1)

如何简单地使用Linq2XML? 这使您可以轻松查询数据 - 查找,排序,插入,删除....

答案 1 :(得分:1)

我的问题实际上有两个部分。

  1. 从已知ID
  2. 获取图书对象
  3. 创建新图书对象
  4. 要检索对象:

     public class Book
     {
        public Book(string id, string name, decimal price)
        {
            Id = id;    
            Name = name;
            Price = price;
        }
        public string Id { get; set; }
        public string Name { get; set; }
        public decimal Price { get; set; }
     }
    

    将具有已知Id的图书加载到对象中:

    XmlDocument xmlDocument = new XmlDocument();
    
    xmlDocument.Load(_path);
    
    XmlNode xmlNode = xmlDocument.SelectSingleNode(@"//book[@id='" + id + "']");
    
    return xmlNode == null ? new Book(id, string.Empty, 0) : new Book(id, xmlNode.Attributes["name"].Value, decimal.Parse(xmlNode.Attributes["price"].Value));
    

    要创建新的图书元素:

    XmlDocument xmlDocument = new XmlDocument();
    
    xmlDocument.Load(_path);
    
    XmlElement newBook = xmlDocument.CreateElement("book");
    newBook.SetAttribute("id", book.Id);
    newBook.SetAttribute("name", book.Name);
    newBook.SetAttribute("price", book.Price.ToString());
    
    xmlDocument.DocumentElement.AppendChild(newBook);
    
    xmlDocument.Save(_path);
    

    其中_path是XML文档的路径。

    我希望这会有所帮助。还要记住,XmlDocument是XML文档的内存或缓存树表示。它有点资源密集,如果你有一个大的XML文档并且没有足够的内存可供使用,请使用XmlReader和XmlWriter以获得更好的性能。