Linq To Entity 对Date使用Like

pinqing 2012-08-21 09:49:19
目前业务上需要对时间进行模糊搜索,比如输入“2012-05”,就能搜出“2012-05-07”,"2012-05-01"等等数据。
输入“12”能搜到“2012-05-07”,“2000-12-01”。
在MySql数据中可以直接写SQL语句:Date Like '%2012-05%',可是在Linq To Entity中需要怎么写才能让他生成这个SQL??
...全文
143 1 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
Andy__Huang 2012-08-21
  • 打赏
  • 举报
回复
请参考:
http://topic.csdn.net/u/20120413/15/5fddd646-f593-4826-a4f1-ebd6b9ae35d6.html
14 Continuous obstructed nearest neighbor queries in spatial databases Yunjun Gao, Baihua Zheng Jun. 2009 Proceedings of the 35th SIGMOD international conference on Management of data In this paper, we study a novel form of continuous nearest neighbor queries in the presence of obstacles, namely continuous obstructed nearest neighbor (CONN) search. It considers the impact of obstacles on the distance between objects, ... 15 Optimizing complex extraction programs over evolving text data Fei Chen, Byron J. Gao, AnHai Doan, Jun Yang, Raghu Ramakrishnan Jun. 2009 Proceedings of the 35th SIGMOD international conference on Management of data Most information extraction (IE) approaches have considered only static text corpora, over which we apply IE only once. Many real-world text corpora however are dynamic. They evolve over time, and so to keep extracted information up to date we ... 16 Privacy preservation of aggregates in hidden databases: why and how? Arjun Dasgupta, Nan Zhang, Gautam Das, Surajit Chaudhuri Jun. 2009 Proceedings of the 35th SIGMOD international conference on Management of data Many websites provide form-like interfaces which allow users to execute search queries on the underlying hidden databases. In this paper, we explain the importance of protecting sensitive aggregate information of hidden databases from being ... 17 Efficient approximate entity extraction with edit distance constraints Wei Wang, Chuan Xiao, Xuemin Lin, Chengqi Zhang Jun. 2009 Proceedings of the 35th SIGMOD international conference on Management of data Named entity recognition aims at extracting named entities from unstructured text. A recent trend of named entity recognition is finding approximate matches in the text with respect to a large dictionary of known entities, as the domain ... 18 Large-scale uncertainty management systems: learning and exploiting your data Shivnath Babu, Sudipto Guha, Kamesh Munagala Jun. 2009 Proceedings of the 35th SIGMOD international conference on Management of data The database community has made rapid strides in capturing, representing, and querying uncertain data. Probabilistic databases capture the inherent uncertainty in derived tuples as probability estimates. Data acquisition and stream systems can ... 19 Data warehouse technology by infobright Dominik Slezak, Victoria Eastwood Jun. 2009 Proceedings of the 35th SIGMOD international conference on Management of data We discuss Infobright technology with respect to its main features and architectural differentiators. We introduce the upcoming research and development projects that may be of special interest to the academic and industry communities. ... 20 Detecting and resolving unsound workflow views for correct provenance analysis Peng Sun, Ziyang Liu, Susan B. Davidson, Yi Chen Jun. 2009 Proceedings of the 35th SIGMOD international conference on Management of data Workflow views abstract groups of tasks in a workflow into high level composite tasks, in order to reuse sub-workflows and facilitate provenance analysis. However, unless a view is carefully designed, it may not preserve the dataflow ... 21 Indexing correlated probabilistic databases Bhargav Kanagal, Amol Deshpande Jun. 2009 Proceedings of the 35th SIGMOD international conference on Management of data With large amounts of correlated probabilistic data being generated in a wide range of application domains including sensor networks, information extraction, event detection etc., effectively managing and querying them has become an important ... 22 Cross-tier, label-based security enforcement for web applications Brian J. Corcoran, Nikhil Swamy, Michael Hicks Jun. 2009 Proceedings of the 35th SIGMOD international conference on Management of data This paper presents SELinks, a programming language focused on building secure multi-tier web applications. SELinks provides a uniform programming model, in the style of LINQ and Ruby on Rails, with language syntax for accessing objects ... 23 Exploiting context analysis for combining multiple entity resolution systems Zhaoqi Chen, Dmitri V. Kalashnikov, Sharad Mehrotra Jun. 2009 Proceedings of the 35th SIGMOD international conference on Management of data Entity Resolution (ER) is an important real world problem that has attracted significant research interest over the past few years. It deals with determining which object descriptions co-refer in a dataset. Due to its practical significance for ... 24 Kernel-based skyline cardinality estimation Zhenjie Zhang, Yin Yang, Ruichu Cai, Dimitris Papadias, Anthony Tung Jun. 2009 Proceedings of the 35th SIGMOD international conference on Management of data The skyline of a d-dimensional dataset consists of all points not dominated by others. The incorporation of the skyline operator into practical database systems necessitates an efficient and effective cardinality estimation module. ... 25 Scalable skyline computation using object-based space partitioning Shiming Zhang, Nikos Mamoulis, David W. Cheung Jun. 2009 Proceedings of the 35th SIGMOD international conference on Management of data The skyline operator returns from a set of multi-dimensional objects a subset of superior objects that are not dominated by others. This operation is considered very important in multi-objective analysis of large datasets. Although a large ...
Introduction This article present a tiny database engine which implements fixed width record tables and BTree indexes. This library is a work in progress, I am looking for some feedback on this to see if there is a need for it. This article is also a work in progress please bookmark and come back later, if you want to see the final article. Why an embedded database Although most of us will use a SQL Server to store and retrieve data sets. There are several situation where an embedded database make sense. When you don't have a SQL Server available When you want your footprint as small as possible and can't afford SQL Express When you want to manipulate or cache SQL data When you need to write highly procedural data manipulation routines When you want maximum speed Features Despite its small size DbfDotNet provides a number of features that you might find useful Type safe In DbfDotNet you manipulate classes with native field types. All data conversion plumbing is done automatically. Very simple entity framework Creating a record and accessing its propery is only what you need. Very small memory footprint Last time I checked the dbfDotNet dll was 50Kb. Other databases are 1Mb to 10Mb. I would appreciate if someone could do some memory usage comparison (I will insert it here). Fast DbfDotNet was conceived for speed. DbfDotNet do not use PInvoke, Threading locks, and do not implement any transaction system. Those 3 technologies have a performance cost that it won't have to pay. In contrast it is using TypeSafe records (without boxing/unboxing) and type safe emitted code. The code is emitted only once per table. It has therefore I believe the potential to be the fastest embedded .Net database there is. I would appreciate if someone could do some speed comparison (I will insert it here). Very small runtime memory usage When you use in Memory DataTable or SQL requests that return DataSets, the entire result sets is in memory. DbfDotNet works conjointly with the garbage collector. As soon as you're finished modifying an entity the garbage collector will mark the record buffer to be saved to disk and released from memory. Why Dbf By default the files are compatible with dBase and can therefore be open in Excel and many other packages. I have been asked : Why Dbf ? Dbf is an old format. The answer is a bit long but simple. As I said earlier DbfDotNet is designed to be as fast as possible. In order to get the database started and get some interest I need two things: A good product A good user base I know by experience that the DBF format will appeal to some of you for several reason: You can easily backup DBF files (and leave index files) You can check DBF content using Excel and many other tools DBF is well known and simple to implement It can be extended to modern types (and has been by clipper and fox pro) Most importantly for me, implementing the .DBF rather that my own custom format has no impact on runtime speed. How does it compare to ADO.Net, SQL, SqlLite, SharpSQL ... I did some speed test against another database (which I won't name) The results are quite encouraging. Dbf.Net ADO.Net Collapse Copy CodeOpening DbfDotNetDatabase: 185 ms Insert 1000 individuals: 39 ms Read individuals sequentially: 5 ms Read individual randomly: 3 ms Modifying individuals: 21 ms Create DateOfBirth index: 77 ms Michael Simmons 22/07/1909 Mark Adams 21/09/1909 Charles Edwards 28/09/1909 ... total 1000 records Enumerate Individuals by age: 36 ms Closing DbfDotNetDatabase: 44 ms Collapse Copy CodeOpening ADO.Net Database: 459 ms Insert 1000 individuals: 80601 ms Read individuals sequentially: 1655 ms Read individual randomly: 1666 ms Modifying individuals: 75574 ms Create DateOfBirth index: 80 ms Michael Simmons 22/07/1909 Mark Adams 21/09/1909 Charles Edwards 28/09/1909 ... total 1000 records Enumerate Individuals by age: 29 ms Closing ADO.Net Database: 0 ms In this test Dbf.Net runs nearly 400 times faster. This is quite unfair however. Dbf.Net does not have transactions and is not ACID. Lets not focus to much on speed but more on code differences: Creating a Table Creating the table is quite different. Dbf.Net requires a type safe record upfront to create a table. In ADO.Net you provide a string. Dbf.Net ADO.Net Collapse Copy CodeDbfTable mIndividuals; void CreateIndividualTable() { mIndividuals = new DbfTable( @"individuals.dbf", Encoding.ASCII, DbfDotNet.DbfVersion.dBaseIV); } class Individual : DbfDotNet.DbfRecord, IIndividual { [DbfDotNet.Column(Width = 20)] public string FIRSTNAME; [DbfDotNet.Column(Width = 20)] public string MIDDLENAME; [DbfDotNet.Column(Width = 20)] public string LASTNAME; public DateTime DOB; [DbfDotNet.Column(Width = 20)] public string STATE; } Collapse Copy CodeConnection _cnn = null; void ITestDatabase.CreateIndividualTable() { _cnn = new System.Data.Connection( "Data Source=adoNetTest.db"); _cnn.Open(); using (DbCommand cmd = _cnn.CreateCommand()) { cmd.CommandText = "CREATE TABLE INDIVIDUAL (ID int primary key, FIRSTNAME VARCHAR(20), MIDDLENAME VARCHAR(20), LASTNAME VARCHAR(20), DOB DATE, STATE VARCHAR(20))"; cmd.ExecuteNonQuery(); } } Inserting new entries in a table: Dbf.Net ADO.Net Collapse Copy Codevoid InsertNewIndividual( int id, string firstname, string middlename, string lastname, DateTime dob, string state) { var indiv = mIndividuals.NewRecord(); indiv.FIRSTNAME = firstname; indiv.MIDDLENAME = middlename; indiv.LASTNAME = lastname; indiv.DOB = dob; indiv.STATE = state; indiv.SaveChanges(); } Collapse Copy Codevoid InsertNewIndividual( int id, string firstname, string middlename, string lastname, DateTime dob, string state) { using (DbCommand cmd = _cnn.CreateCommand()) { cmd.CommandText = string.Format( "INSERT INTO INDIVIDUAL (ID, FIRSTNAME, MIDDLENAME, LASTNAME, DOB, STATE) VALUES({0}, '{1}', '{2}', '{3}', '{4}', '{5}');", id, firstname, middlename, lastname, dob.ToString("yyyy-MM-dd HH:mm:ss"), state); cmd.ExecuteNonQuery(); } } Getting an individual by record ID Dbf.Net ADO.Net Collapse Copy CodeIIndividual GetIndividualById(int id) { DbfDotNetIndividual result = mIndividuals.GetRecord(id); return result; } Collapse Copy CodeIIndividual GetIndividualById(int id) { using (DbCommand cmd = _cnn.CreateCommand()) { cmd.CommandText = string.Format( "SELECT * FROM INDIVIDUAL WHERE ID=" + id); var reader = cmd.ExecuteReader(); try { if (reader.Read()) return GetNewIndividual(reader); else return null; } finally { reader.Close(); } } } Individual GetNewIndividual( DbDataReader reader) { var res = new Individual(); res.ID = reader.GetInt32(0); res.FirstName = reader.GetString(1); res.MiddleName = reader.GetString(2); res.LastName = reader.GetString(3); res.Dob = reader.GetDateTime(4); res.State = reader.GetString(5); return res; } class Individual : IIndividual { public int ID { get; set; } public string FirstName { get; set; } public string MiddleName { get; set; } public string LastName { get; set; } public DateTime Dob { get; set; } public string State { get; set; } } Saving a modified individual back to the database. In Dbf.Net you don't have to write any code, if you don't want to wait for the garbage collector to collect your individual you can call SaveChanges. Dbf.Net ADO.Net Collapse Copy Codevoid SaveIndividual( Individual individual) { individual.SaveChanges(); } Collapse Copy Codevoid SaveIndividual( IIndividual individual) { using (DbCommand cmd = _cnn.CreateCommand()) { cmd.CommandText = string.Format( "UPDATE INDIVIDUAL SET DOB='{1}' WHERE ID={0};", individual.ID, individual.Dob.ToString( "yyyy-MM-dd HH:mm:ss")); cmd.ExecuteNonQuery(); } } Creating an Index Dbf.Net ADO.Net Collapse Copy Codevoid CreateDobIndex() { var sortOrder = new DbfDotNet.SortOrder( /*unique*/false); sortOrder.AddField("DOB"); mDobIndex = mIndividuals.GetIndex( "DOB.NDX", sortOrder); } Collapse Copy Codevoid CreateDobIndex() { using (DbCommand cmd = _cnn.CreateCommand()) { cmd.CommandText = string.Format( "CREATE INDEX DOB_IDX ON INDIVIDUAL (DOB)"); cmd.ExecuteNonQuery(); } } Getting individuals sorted by Age Dbf.Net ADO.Net Collapse Copy CodeIEnumerable IndividualsByAge() { foreach (Individual indiv in mDobIndex) { yield return indiv; } } Collapse Copy CodeIEnumerable IndividualsByAge() { using (DbCommand cmd = _cnn.CreateCommand()) { cmd.CommandText = string.Format( "SELECT * FROM INDIVIDUAL ORDER BY DOB"); var reader = cmd.ExecuteReader(); try { while (reader.Read()) { yield return GetNewIndividual(reader); } } finally { reader.Close(); } } } High Level Interface I have been asked how I compare to other SQL databases. Again DbfDotNet is not a SQL engine. It is rather an object persistence framework, like the Microsoft Entity Framework or NHibernate. The difference is that it doesn't translate object manipulations into SQL requests because it speaks directly to the database layer. I would love to write a proper Dbf to Linq interface, if you want to help me on this please volunteer. The difference Using the code Warning: This project is at its infancy, it has not been tested thoroughly. You can try it but please don't use it in a live environment. If you want speed however and are ready to either report or fix issues that might arrise: Create a C# project Reference DbfDotNet.dll in your project Create a record class Write some code manipulate the records Point 3 and 4 are expanded below. The DbfRecord class The DbfRecord class represent one row in your table. You can can the column attribute to change DBF specific parameters. Collapse Copy Code class Individual : DbfDotNet.DbfRecord { [Column(Width = 20)] public string FIRSTNAME; [Column(Width = 20)] public string MIDDLENAME; [Column(Width = 20)] public string LASTNAME; public DateTime DOB; [Column(Width = 20)] public string STATE; }The system automatically chooses the DbfField most appropriate for your datatype. The DbfTable class In order to store your records somewhere you need to create a Table: Collapse Copy Code individuals = new DbfTable( @"individuals.dbf", Encoding.ASCII, DbfVersion.dBaseIV); Note that this using a type safe template. Every record in the table are individual's. Record Manipulation You can add new lines in the table by using the NewRecord Collapse Copy Code var newIndiv = individuals.NewRecord();Then you simply use the fields in your record Collapse Copy Code newIndiv.LASTNAME = "GANAYE";Optionally you can make a call to SaveChanges to immediately save your changes. If you don't the data will be saved when your individual is garbage collected. Collapse Copy Code newIndiv.SaveChanges(); Index support This is still very basic. First you define your sort order: Collapse Copy Code var sortOrder = new SortOrder(/* unique */ false); sortOrder.AddField("LASTNAME");Then you can get your index: Collapse Copy Code mIndex = individuals.GetIndex("lastname.ndx", sortOrder); You can then, In a type safe way, retrieve any individual from your index. Collapse Copy Code individual = mIndex.GetRecord(rowNo); In order to maximize speed, the index emit its own type safe code for : reading the index fields from the DBF record reading and writing index entries comparing index entries Inner architecture DbfDotNet main class is the ClusteredFile The ClusteredFile is a wrapper around stream that provide paging and caching support. The ClusteredFile is the base class for DbfFile and NdxFile. It will also be the base class for memo files when I write them. The ClusteredFile uses a class called QuickSerializer to serialize the record content to a byte array. QuickSerializer parse the Record fields and generate a bit of IL code for every fields to allow reading, saving and comparison. NdxFile implements a B+Tree index Roadmap My plan is to keep this library extremelly small. It is not my intention to implement any transaction or multi-threading support. I will implement : support for every DBF fields types memo fields (VARCHAR type) multiple indexes files (*.mdx) Proper documentation LINQ (in a separate dll) If you want to help me on this project please contact me. Points of Interest In order to maximize speed I forced myself to not use any thread synchronization locking. Each set of Dbf + Indexes must be called from a given thread. In other word each dbf file and its index can be used by only one thread. I encountered a problem though when the Garbage Collector finalize a record, this is done in the Garbage Collector thread. I did not want to lock a resource and ended up writing this code: Collapse Copy Codeclass Record { private RecordHolder mHolder; ~Record() { try { ... } finally { mHolder.RecordFinalized.Set(); } } } Each record has a RecordHolder that store a ReadBuffer and potentially a WriteBuffer. When the record finalize it signal the RecordHolder that the record has been finalized. This instruction is not blocking, it raises a flag that can be used in other threads. Collapse Copy Codeclass ClusteredFile { internal virtual protected Record InternalGetRecord(UInt32 recordNo) { RecordHolder holder = null; if (!mRecordsByRecordNo.TryGetValue(recordNo, out holder)) {...} record = holder.mRecordWeakRef.Target; if (record==null) { // the object is not accessible it has finalized a while ago or is being finalized if (holder.RecordFinalized.WaitOne()) { //Now it has finalized we will create a new record holder.RecordFinalized.Reset(); holder.Record = OnCreateNewRecord(/*isnew*/false, recordNo); } } return holder.Record; } } And then when the table thread try to get the record while it is disposing we use the method : holder.RecordFinalized.WaitOne() to make sure the finalization has completed first. Most of the time this method won't be blocking your DBF thread as the record has been finalized some time ago. History 2009 June 4th : Added samples and ADO.Net comparison 2009 June 1st : First DbfDotNet (C#) release. 2000 May 21st : I wrote my first database engine, it is called tDbf and works on Delphi. License This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)
NativeXml-master This file contains a list of all bugfixes, additions and enhancements to NativeXml. Maintained by Nils Haeck (SimDesign BV) ! = bugfix * = enhancement + = addition Version 4.07 (03oct2012) ! Improved canonicalization (c14n), now works recursively and returns # expanded entities ! Fixed up a rangecheck warning in sdUtf8ToWideBuffer ! cleaned up some compiler directives Version 4.06 (16aug2012) + Added TXmlNode.NodeRemoveEx (allows removal of the line with the node instead of just the node itself) - experimental Version 4.05 (11aug2012) ! Reimplemented/Fixed sdNormaliseEol function + Readded (hex) character replacement Version 4.04 (06aug2012) ! Updated simdesign.inc to add DXE2 ! Fixed bug in DirectNodeCount ! Fixed (removed) erratic un-normalisation ! removed erratic $ifdef in NativeXmlObjectStorage.pas Version 4.03 (13jul2012) * Core End-Of-Line style is LF, defaults CR-LF, LF and CR for Windows, Linux, Mac respectively ! Fixed EOL bug in source (thx Christian) * TsdChardata.GetCoreValue and .GetPlatformValue Version 4.02 (05nov2011) * default end-of-line style now esCRLF (uses CR-LF combination by default for Windows) + form storage in editor (both default and XE versions) uses NativeXml itself :) + added support for EolStyle = esCR (for use with the Mac) + added separator when writing declaration, skip separator when parsing declaration ! fixed problems in binary xml. Consequence: New binary xml version v2. * NativeXml (and binary xml) now supports xml-stylesheet correctly * binary xml now supports doctype correctly * fixed attribute processing in NativeXmlStorage.pas (thanks RKS) Version 4.01 (27jul2011) + added binary xml to the TNativeXml class itself + added methods BinaryMethod and AesKeyHex * improved FixStructuralErrors.. NativeXml can now load html usually * improved method sdUnNormalizeEol (faster now) ! fixed property handlers for ExternalEncoding and ExternalCodepage + updated DtpEditor XE Version 4.00 (23jul2011) + implemented binary xml (BXM) + added ValueAsDate and ValueAsTime besides ValueAsDateTime + added SplitSecondDigits parameter (default = 0) * constructor CreateParentNear instead of CreateParentBefore/After to avoid clash with CppBuilder + added zlib compression and AES encryption for BXM in the demo Version 3.32 (07jul2011) ! re-added D5 compatibility ! fixed TNativeXml.New method Version 3.31 (29jun2011) ! fixed string table (part of lowlevel string processing of NativeXml) * integrated End-Of-Line normalisation in the XML parser * placed NativeXmlC14N.pas in NativeXml.pas, TNativeXml.Canonicalize integrated Version 3.30 (20may2011) * reimplemented DropCommentsOnParse * reimplemented AttributesClear + added property Charset ! reworked write FExternalEncoding * readded EncodeBinHex / DecodeBinHex + sdNodeList with default Create * alphabetized NativeXml bool options + Linux: allow many codepage conversions, using NativeXmlWin32Compat.pas (largely untested tho) * added class methods TNativeXml.EncodeBase64 / DecodeBase64 next to the global base64 coding methods. ! corrected ranges of arrays in the coders, so rangechecking does not need to be disabled * slightly more verbose error messages (line + pos instead of just pos) Version 3.29 (01apr2011) ! fixed last part of the file processing (final chunk) so NormalizeEOL works correctly now ! fix: changed boolean value strings 'True' and 'False' to 'true' and 'false' according to W3 spec + Added some helper functions for Linux (still experimental), this does not affect Win32 * Joined TsdBufferParser and TsdXmlParser (now just TsdXmlParser) * Updated OnProgress and added progress bar in XmlEditor Version 3.28 (21mar2011) + Re-added NodeNewAtIndex * Verified and fixed demos Version 3.27 (19mar2011) ! fixed Delphi XE-related bug in sdEscapeString + Re-added method NodesClear + Re-added methods ValueUnicode, AttributeValueByNameWide, IndexInParent, SortChildNodes + made AttributeIndexByName public + Re-added constructors TXmlNode.CreateName, CreateNameValue Version 3.26 (16mar2011) * TCustomXml and TNativeXml joined + Added property TXmlNode.Document (type TNativeXml) + Added ReadUnicodeString / WriteUnicodeString * Made NodeFindOrCreate public ! Fixed FWriteOnDefault + Added ReadAttributeBool, ReadAttributeString, ReadUnicodeString and WriteUnicodeString Version 3.25 (03mar2011) * enhanced function sdEscapeString (contributor: Michael Cessna) ! Fixed function sdReplaceString (new implementation) + Added Test16 to verify sdEscapeString and sdReplaceString Version 3.24 (24feb2011) + Added function TCustomXml.InsertDocType to hide the complexity of inserting a TsdDocType manually ! fixed small leak in class TsdDocType + Added Test15 to diagnose TCustomXml.InsertDocType ! fixed major bug where parser does not use ansi + 65001 codepage but really utf8, so the writer also uses utf8 (and added Test14 to check) * Added speed comparison between old TNativeXml and new TNativeXml: new TNativeXml is ca 3 times faster than old. + TNativeXmlObjectStorage: Added storage of TCollectionItem and removed some "with" statements and replaced some raise statements by DoDebugOut * Tested successfully with D5, D7 and DXE Version 3.23 (13feb2011) * Reimplemented TXmlNode.IsEqualTo + Added Test12 (to check IsEqualTo) + Added D5 compatibility (through sdDebug.pas) + Option "FixStructuralErrors" is functional: With this option you can fix the structure in HTML files (eg a <meta> tag without closing tag). Version 3.22 (08feb2011) ! fixed accidental switch of TCustomXml(FOwner).DoNodeLoaded/DoNodeNew; ! fixed attribute handling of values (added sdReplaceString) + Added UTF16BE support in SaveToStream ! Renamed WriteToString/WideString to WriteToLocalString/Widestring for Utf8 and Utf16, and added generic WriteToString for "string" type + Added readonly property TXmlNode.DirectNodeCount + Added properties TXmlNode.ChildContainers[i] and TXmlNode.ChildContainerCount + Added Test5, Test6 and Test7 functions in XmlTest demo app * placed sdStringEncoding and sdBufferParser in NativeXml (no longer needs separate units) + Minor improvements in writing xml elements with XmlFormat := xfReadable Version 3.21 (04feb2011) ! Re-added sdStringToDateTime functions instead of non-functional StrToDateTime ! Fixed function sdNormaliseEOL + Re-added TXmlNode.Delete + Added Test3 and Test4 functions in XmlTest demo app Version 3.20 (31jan2011) * Combined NativeXmlEx, NativeXmlNodes, NativeXmlParser and NativeXmlUtils into one new unit NativeXml - Removed old NativeXml + Added WriteToString method for the TXmlNode classes + Added Assign and CopyFrom methods for the TXmlNode classes + Added a few methods from the old NativeXml (e.g. DeleteEmptyNodes) * sdStreams no longer needs sdStreamsPlatform * Generalized include files Version 3.14 (24jan2011) + Added LINQ-like methods and example (contributor: Marius Z) + Reimplemented ValueAsXYZ methods in NativeXmlEx * Added and enhanced XmlFormat = xfPreserve + Verified successful working in both D7 and DXE Version 3.13 (16jan2011) + NativeXmlObjectStorage now works with NativeXmlEx * Many improvements in the writer (NativeXmlNodes) ! Fixed Utf8 to Ansi (sdStringEncoding) * Dual version of XmlEditorEx demo for D7 and DXE by use of {$ifdef}'s Version 3.12 (31dec2010) + Experimental unit NativeXmlC14n.pas (for canonicalization) ! Many bugfixes in NativeXmlEx parser + normalize end-of-line * NativeXmlEx html online docu * XmlEditorEx demo with versions for Delphi7 and DelphiXE Version 3.11 (28nov2010) + Implemented NativeXmlEx: NativeXmlEx.pas (TCustomXmlEx and TNativeXmlEx components) NativeXmlNodes.pas (TXmlNode and descendant nodes like TsdAttribute and TsdElement) NativeXmlUtils.pas (lowlevel types and consts of nativexml, codepage constants, low-level string handling functions) NativeXmlParser.pas (TsdXmlParser and TsdXmlWriter components) sdStringTable.pas in /general sdStringEncoding.pas in /general sdStreams.pas in /general sdStreamsPlatform.pas in /general sdBufferParser.pas in /general sdDebug.pas in /general sdSortedLists.pas in /general ! fixed WriteAttributeInt64 and WriteInt64 (NativeXml.pas) Version 3.10 (21sep2010) ! fixed local bias in datetime processing (contributor Stefan Glienke) ! XML without encoding should be UTF-8 ! default values In ReadAttributeXXX when empty strings instead of exceptions ! Allow multiple defined properties ! fixed bug in varCurrency values when reading variants ! No info stored in stream in procedure ObjectSaveToXmlXXXX ! Problem with saving/reading collections (contributor Adam Siwon) Version 3.09 (21jul2010) ! allow "utf-8" as well as "UTF-8" as encodingstring (NativeXml.pas) ! trim string values in normal elements (NativeXml.pas hack) ! RawByteString instead of UTF8String in TsdXmlObjectWriter (NativeXmlObjectStorage) + exception 'Unregistered classtype encountered in nodename' instead of general exception (NativeXmlObjectStorage) ! Local bias (daylightsaving) and time zone designator in date/time conversion (contributor Stefan Glienke) Version 3.08 (25jun2010) ! do not write BOM when encoding="UTF-8" Version 3.07 (10Mar2010) ! fixed TXmlNode.SetValueAsInt64 Version 3.06 (03Feb2010) * Added compiler directives for NativeXmlStorage.pas ! Fixed "implicit string conversion" warnings in examples Version 3.05 (19Dec2009) * Added some compiler directives for D2009/D2010 Version 3.04 (28Nov2009) * Changed license of NativeXml to very liberal and comprehensible BSD-Style Open-Source Version 3.03 ! Added {$ELSE} directive and declarations for UnicodeChar and PUnicodeChar Version 3.02 ! Bugfix in attribute value code Version 3.00 (20Sep2009) * Made compatible with D2009 and its convention that string is unicode (2bytes/char) Version 2.39 * Replaced all widestring by WideString (conform to case used in Delphi) Version 2.38 (07March2008) + Added TXmlNode.ReadAttributeDateTime + Added TXmlNode.WriteAttributeDateTime + Support for D2007-NET (version 190) ! ReadFromStream now first clears subnodes Version 2.37 (18Dec2007) + Added ByAttribute function to TXmlNodeList ! Fixed problem with NodeAdd from another tree (Document reference gets updated now) ! Fixed deletion of empty attributes Version 2.36 (11Nov2007) ! Do not save empty encoding (e.g. encoding=""). * Renamed some local variables * Code re-formatted Version 2.35 (17Aug2007) * Bugfix in sdWriteNumber Version 2.34 (31May2007) + Added WriteAttributeInt64 ! Made check for UTF-8 case insensitive * Fixed bug with stringtable (removed "gaps") + Added AttributeValueDirect prop Version 2.31 (03May2007) * Verified compatibility with Delphi2 and 3 * Fixed 2 harmless compiler warnings Version 2.30 (30Apr2007) + Added stringbuilder class for faster creation of strings. This should make NativeXml parse documents with large value strings faster. + Patches to allow compilation under freepascal ! Fixed bug with ' and " inside quotes (now "bla'bla'bla" is allowed) * ReadAttributeBool/WriteAttributeBool allow empty elements * Made changes to assure NativeXml works well with "boolean evaluation" compile flag on ! Fixed bug in WriteWidestrProp ! Fixed bug in SetValueAsFloat ! Fixed bug in SetAttributeByNameWide Version 2.26 (05Dec2006) + Added ReadAttributeInt64 property ! Fixed bugs with StrToInt which should be StrToInt64. ! Fixed bug with tag parsing where tags like "bla>bla" caused the parser to stop on the ">". Version 2.23 (02Dec2005) ! Fixed bug in entity resolving for attributes ! Bugfix: Take into account default value in WriteAttributeString/-Integer ! Bugfix: Never write empty attributes to the XML file + Added TotalNodeCount property * Removed TNativeXml.StyleSheetString, replaced by TNativeXml.StyleSheetNode * WriteFloat now uses proprietary routine (threadsafe), always using a dot as decimal separator and settings from NativeXml.FloatSignificantDigits and FloatAllowScientific Version 2.20 (19Sep2005) + Added SortAttributes property + Added ParserWarnings property * Added RootNodeList property, to allow easier access to XML nodes in the header, and removed ExtraNodes and Comments properties. + Added TXmlNode.IsEqualTo function to compare nodes in documents ! Fixed bug in FullPath property (one slash too much at start) * FindNodes can now also be used with full paths ! Bugfix: no longer adds CRLF after ENTITY declarations ! Bugfix: AttributeName[] setter now no longer strips quotes from attribute value. + Added AttributeValueAsWidestring[] property + Added AttributeValueAsInteger[] property Version 2.13 (25Jul2005) ! Fixed bug with begin-tag reading (only seldom, with <?..?> nodes) Version 2.12 (25Jul2005) * Changed order of DoNodeLoaded and DoProgress, to avoid bug when freeing in OnNodeLoaded. + Added SortAttributes property + Added ParserWarnings property * Added RootNodeList property, to allow easier access to XML nodes in the header - Removed ExtraNodes and Comments properties * Changed Assign methods (faster now) + Added function TXmlNode.NodeByElementType + Added boolean property TNativeXml.AbortParsing ! Fixed bug with end-tag reading (when reading CDATA sections with \"]\" in the data string) Version 1.00 (01Apr2003) - Initial release

17,748

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 .NET Framework
社区管理员
  • .NET Framework社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧