/** @mainpage
<h1> TinyXml </h1>
TinyXml is a simple, small, C++ XML parser that can be easily
integrating into other programs.
<h2> What it does. </h2>
In brief, TinyXml parses an XML document, and builds from that a
Document Object Model that can be read, modified, and saved.
XML stands for "eXtensible Markup Language." It allows you to create
your own document markups. Where HTML does a very good job of marking
documents for browsers, XML allows you to define any kind of document
markup, for example a document that describes a "to do" list for an
organizer application. XML is a very structured and convenient format.
All those random file formats created to store application data can
all be replaced with XML. One parser for everything.
There are different ways to access and interact with XML data.
TinyXml uses a Document Object Model, meaning the XML data is parsed
into a tree objects that can be browsed and manipulated, and then
written back to disk. You can also construct an XML document from
scratch with C++ objects and write this to disk.
TinyXml is designed to be easy and fast. It is one header and three cpp
files. Simply add these to your project and off you go. There is an
example to get you started. It is released under the ZLib license,
so you can use it in open source or commercial code.
It attempts to be a flexible parser, but with truly correct and
compliant XML output (with the exception of the character set,
below.) TinyXml should compile on any reasonably C++
system. It does not rely on exceptions or RTTI, and only uses the STL
string class.
<h2> What it doesn't do. </h2>
It doesnt parse or use DTDs (Document Type Definitions) or XSLs
(eXtensible Stylesheet Language.) It is limited to the ASCII
character set. There are other parsers out there (check out
www.sourceforge.org, search for XML) that are much more fully
featured. But they are also much bigger, take longer to set up in
your project, have a higher learning curve, and often have a more
restrictive license. If you are working with browsers or have more
complete XML needs, TinyXml is not the parser for you.
<h2> Code Status. </h2>
Currently in use, TinyXml is looking pretty stable. If you find
bugs, send them in and we'll get them straightened out as soon as possible.
There are some areas of improvement; please check sourceforge if you are
interested in working on TinxXml.
<h2> Changes between version 1 and 2 </h2>
<h3> Entities </h3>
TinyXml recognizes the pre-defined "entity references", meaning special
characters. Namely:
@verbatim
& &
< <
> >
" "
'
@endverbatim
These are recognized when the XML document is read, and translated to there
ASCII equivalents. For instance, text with the XML of:
@verbatim
Far & Away
@endverbatim
will have the Value() of "Far & Away" when queried from the TiXmlText object,
but will be written back to the XML stream/file as an entitity.
TiXml will ignore unknown entities and the
@verbatim
"&#x"
@endverbatim
entities, and leave them unprocessed.
<h3> Streams </h3>
TiXml has been modified to support both C (FILE) and C++ (operator <<,>>)
streams. There are some differences that you may need to be aware of.
C style output:
- based on FILE*
- the Print() and SaveFile() methods
Generates formatted output, with plenty of white space, intended to be as
human-readable as possible. They are very fast, and tolerant of ill formed
XML documents. For example, an XML document that contains 2 root elements
and 2 declarations, will print.
C style input:
- based on FILE*
- the Parse() and LoadFile() methods
A fast, tolerant read. Use whenever you don't need the C++ streams.
C++ style ouput:
- based on std::ostream
- operator<<
Generates condensed output, intended for network transmission rather than
readability. Depending on your system's implementation of the ostream class,
these may be somewhat slower. (Or may not.) Not tolerant of ill formed XML:
a document should contain the correct one root element. Additional root level
elements will not be streamed out.
C++ style input:
- based on std::istream
- operator>>
Reads XML from a stream, making it useful for network transmission. The tricky
part is knowing when the XML document is complete, since there will almost
certainly be other data in the stream. TinyXml will assume the XML data is
complete after it reads the root element. Also not that operator>> is somewhat
slower than Parse, due to both implementation of the STL and limitations of
TinyXml.
<h3> White space </h3>
The world simply does not agree on whether white space should be kept, or condensed.
For example, pretend the '_' is a space, and look at "Hello____world". HTML, and
at least some XML parsers, will interpret this as "Hello_world". They condense white
space. Some XML parsers do not, and will leave it as "Hello____world". (Remember
to keep pretending the _ is a space.)
It's an issue that hasn't been resolved to my satisfaction. TinyXml supports both
motifs. Call TiXmlBase::SetCondenseWhiteSpace( bool ) to set the desired behavior.
The default is to condense white space.
If you change the default, you should call TiXmlBase::SetCondenseWhiteSpace( bool )
before making any calls to Parse XML data, and I don't recommend changing it after
it has been set.
<h2> Using and Installing </h2>
To Compile and Run xmltest:
A Linux Makefile and a Windows Visual C++ .dsp file is provided.
Simply compile and run. It will write the file demotest.xml to your
disk and generate output on the screen. It also tests walking the
DOM by printing out the number of nodes found using different
techniques.
The Linux makefile is very generic and will
probably run on other systems, but is only tested on Linux. You no
longer need to run 'make depend'. The dependecies have been
hard coded.
To Use in an Application:
Add tinyxml.cpp, tinyxml.h, tinyxmlerror.cpp, and tinyxmlparser.cpp to your
project or make file. That's it! It should compile on any reasonably
compliant C++ system. You do not need to enable exceptions or
RTTI for TinyXml.
<h2> Where it may go. </h2>
At this point, I'm focusing on tightening up remaining issues.
Bug fixes (though comfortably rare) and minor interface
corrections.
There are some "it would be nice if..." items. I'll keep those
posted as tasks on SourceForge. (www.sourceforge.net/projects/tinyxml)
<h2> How TinyXml works. </h2>
An example is probably the best way to go. Take:
@verbatim
<?xml version="1.0" standalone=no>
<?-- Our to do list data -->
<ToDo>
<Item priority="1"> Go to the <bold>Toy store!</bold></Item>
<Item priority="2"> Do bills</Item>
</ToDo>
@endverbatim
Its not much of a To Do list, but it will do. To read this file
(say "demo.xml") you would create a document, and parse it in:
@verbatim
TiXmlDocument doc( "demo.xml" );
doc.LoadFile();
@endverbatim
And its ready to go. Now lets look at some lines and how they
relate to the DOM.
<?xml version="1.0" standalone=no>
The first line is a declaration, and gets turned into the
TiXmlDeclaration class. It will be the first child of the
document node.
This is the only directive/special tag parsed by by TinyXml.
Generally directive targs are stored in TiXmlUnknown so the
commands wont be lost when it is saved back to disk.
<?-- Our to do list data -->
A comment. Will become a TiXmlComment object.
<ToDo>
The ToDo tag defines a TiXmlElement object. This one does not have
any attributes, but will contain 2 other elements, both of which
are items.
<Item priority="1">
Creates another TiXmlElement which is a child of the "ToDo" element.
This element has 1 attribute, with the name priority and the value
1.
Go to the
A TiXmlText. This is a leaf node and cannot contain other nodes.
It is a child of the Item" Element.
<bold>
Another TiXmlElement, this one a child of the "Item" element.
Etc.
Look
没有合适的资源?快使用搜索试试~ 我知道了~
lame-398-2.rar_Martin Sieler_lame
共368个文件
h:68个
c:49个
in:25个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 182 浏览量
2022-09-22
19:46:19
上传
评论
收藏 1.36MB RAR 举报
温馨提示
mp3 编码器 源码 lame 398.
资源推荐
资源详情
资源评论
收起资源包目录
lame-398-2.rar_Martin Sieler_lame (368个子文件)
lame.1 27KB
Makefile.am 2KB
Makefile.am 2KB
Makefile.am 2KB
Makefile.am 2KB
Makefile.am 1KB
Makefile.am 1KB
Makefile.am 453B
Makefile.am 414B
Makefile.am 411B
Makefile.am 409B
Makefile.am 354B
Makefile.am 331B
Makefile.am 300B
Makefile.am 285B
Makefile.am 193B
Makefile.am 171B
Makefile.am 145B
Makefile.am 141B
Makefile.am 139B
Makefile.am 135B
Makefile.am 133B
Makefile.am 125B
API 4KB
auenc 773B
lame4dos.bat 1KB
lame.bat 1KB
makedistwin.bat 331B
psymodel.c 97KB
parse.c 85KB
lame.c 71KB
quantize.c 63KB
gtkanal.c 57KB
get_audio.c 54KB
layer3.c 48KB
vbrquantize.c 45KB
id3tag.c 40KB
abx.c 38KB
set_get.c 38KB
takehiro.c 36KB
newmdct.c 36KB
bitstream.c 34KB
quantize_pvt.c 33KB
VbrTag.c 30KB
BladeMP3EncDLL.c 30KB
ath.c 27KB
main.c 26KB
util.c 24KB
tables.c 20KB
gain_analysis.c 19KB
encoder.c 18KB
interface.c 17KB
presets.c 14KB
brhist.c 11KB
portableio.c 11KB
timestatus.c 11KB
reservoir.c 10KB
rtp.c 10KB
gpkplotting.c 10KB
dct64_i386.c 9KB
fft.c 9KB
mpglib_interface.c 9KB
decode_i386.c 9KB
layer2.c 9KB
mp3rtp.c 7KB
common.c 7KB
console.c 7KB
version.c 6KB
mlame_corr.c 5KB
tabinit.c 5KB
layer1.c 4KB
scalartest.c 4KB
lametime.c 4KB
amiga_mpega.c 3KB
xmm_quantize_sub.c 3KB
mp3x.c 2KB
MacDLLMain.c 46B
ChangeLog 403KB
changelog 8KB
compat 2B
configure 961KB
INSTALL.configure 8KB
control 2KB
COPYING 25KB
copyright 2KB
AEncodeProperties.cpp 57KB
ACM.cpp 47KB
Mpegac.cpp 43KB
PropPage.cpp 19KB
tinyxml.cpp 18KB
tinyxmlparser.cpp 17KB
Encoder.cpp 17KB
ACMStream.cpp 12KB
PropPage_adv.cpp 11KB
xmltest.cpp 10KB
Example.cpp 8KB
DecodeStream.cpp 6KB
REG.CPP 6KB
aboutprp.cpp 5KB
main.cpp 5KB
共 368 条
- 1
- 2
- 3
- 4
资源评论
局外狗
- 粉丝: 66
- 资源: 1万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- [大模型部署]在C# Winform中使用文心一言ERNIE-3.5 4K 聊天模型
- python毕业设计-基于Django+OpenCV的二维码生成与识别系统设计与实现.zip
- python毕业设计-基于Django+OpenCV的二维码生成与识别系统设计与实现+使用说明.zip
- 基于STM32单片机空气监测系统设计源码+详细文档+配套全部资料(毕业设计).zip
- rdf0412-kcu116-pcie-c-2019-1.zip(XILINX KCU116 源码)
- 基于C#语言的winform界面火车票订票系统(源码+实验报告)
- 【华为OD部分真题及讲解】华为OD部分真题及讲解
- 基于Python+Django的京东商品比价系统源码+全部资料(毕业设计).zip
- G460 G560 Z460 Z560的最新BIOS 2.18版(无白名单)
- MetaJUI v0.4
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功