• LINQ To XSD


    如何使用LINQ通过XSD,查询XML中的数据?

    在工作开始之前,需要安装LINQ To XSD Alpha 2。虽然是Alpha版本,不过安装,使用没有什么问题的。

    Step 1: 创建一个LINQ To XSD Console Application
           

    其实当我们创建XSD Preview Project,在Reference中会增加一个Assembly:Microsoft.Xml.Schema.Linq.dll.
    此程序集主要工作:生成XML、XSD 文档。

    Step 2: 创建一个XML Schema

    Step 3: 要指引Visual Studio 去用Linq To XSD技术生成相应的classes.

    Step 4: 编译Project,使用Object Explorer查看当前的XSD,或者是XSD的namespace.
                 可以看到Books,BooksForm类,这些就是自动生成出来的Wrapper classe,
                 此时就可以用LINQ进行Query了。

     

    相关XSD内容:

    <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
                targetNamespace
    ="books"
                xmlns:bks
    ="books">

      
    <xsd:element name="books" type="bks:BooksForm"/>

      
    <xsd:complexType name="BooksForm">
        
    <xsd:sequence>
          
    <xsd:element name="book"
                      type
    ="bks:BookForm"
                      minOccurs
    ="0"
                      maxOccurs
    ="unbounded"/>
          
    </xsd:sequence>
      
    </xsd:complexType>

      
    <xsd:complexType name="BookForm">
        
    <xsd:sequence>
          
    <xsd:element name="author"   type="xsd:string"/>
          
    <xsd:element name="title"    type="xsd:string"/>
          
    <xsd:element name="genre"    type="xsd:string"/>
          
    <xsd:element name="price"    type="xsd:float" />
          
    <xsd:element name="pub_date" type="xsd:date" />
          
    <xsd:element name="review"   type="xsd:string"/>
        
    </xsd:sequence>
        
    <xsd:attribute name="id"   type="xsd:string"/>
      
    </xsd:complexType>
    </xsd:schema>

    相关XML内容:

    <?xml version="1.0"?>
    <x:books xmlns:x="books">
       
    <book id="bk001">
          
    <author>Robert E. Howard</author>
          
    <title>The Coming of Conan the Cimmerian</title>
          
    <genre>Science Fiction & Fantasy</genre>
          
    <price>44.95</price>
          
    <pub_date>2003-12-02</pub_date>
          
    <review>Conan let go, spat blood from his mouth..</review>
       
    </book>

       
    <book id="bk002">
          
    <author>Terry Goodkind</author>
          
    <title>Wizard's First Rule</title>
          
    <genre>Fantasy</genre>
          
    <price>24.95</price>
          
    <pub_date>2001-06-23</pub_date>
          
    <review>My world contest best book</review>
       
    </book>

       
    <book id="bk003">
          
    <author>HP Lovecraft</author>
          
    <title>Call of Cthulhu</title>
          
    <genre>Science Fiction & Fantasy</genre>
          
    <price>42</price>
          
    <review>I am writing this under an appreciable mental strain, 
            since by tonight I shall be no more
    </review>
       
    </book>
    </x:books>

    Step 5: 首先打开一个XML DataBase  

    targetNamespace="books" --当前XSD的namespace
    books.books dbBook 
    = books.books.Load("books.xml");

                 
    Step 6: 然后,你可以直接用linq query dbBook对象 

    var bookList = from b in dbBook.book
                   select b; 
    //当前booklist中包含books.xml所有的数据

    Step 7:QA
                 以上就是LINQ To XSD的基本运用
                 嗯,其实如果你要进行复杂操作的话,
                 只要你会LINQ进行Query的话,问题都不是很大。
                 其实XSD生成出来的类,还是提供了一些基本的操作
                 如:ADD,Delete,Remove,Save  

     Remove:
                 
    //remove it
                 foreach (var b in book001)
                     dbBook.book.Remove(b);
                 
    //Save File
                 dbBook.Save( "books.xml" );
    Create:
                books.BookForm itemToAdd 
    = new books.BookForm();
                itemToAdd.author 
    = "XXXXX";
                itemToAdd.genre 
    = "XXXX";
                itemToAdd.id 
    = "XXXX";
                itemToAdd.price 
    = XXX;
                itemToAdd.pub_date 
    = Convert.ToDateTime( "XXXXXX" );
                itemToAdd.title 
    = "XXXX";

                
    //add it to database
                dbBook.book.Add( itemToAdd );

                
    //save the new database
                dbBook.Save( "books.xml" );
    好了,就到这里。。。
  • 相关阅读:
    WM_MOUSEWHEEL消息的处理
    Delphi之TStrings和TStringLists类[转]
    使用mysqladmin命令修改Mysql密码
    AP_发票与预付款核销时预付款带税码
    ORACLE EBS AP发票到付款的数据流
    .关于货币大写的探索
    Oracle SQL 空值排序(Nulls)
    实现主从关系Form中汇总行金额/数量
    巧妙的查看FORM中的 LOV查询语句
    供应商接口的使用
  • 原文地址:https://www.cnblogs.com/RuiLei/p/1379517.html
Copyright © 2020-2023  润新知