本书简单回顾了XML墓础知识,重点介绍了用Java处理的XML应用程序,包括简单XML应用程序、文档对象模型和JDOM等。\r\n\r\n 本书通俗易懂,便于读者掌握用Java处理XML的技术,适用于Java程序员和自学者。\r\n
\r\n
List of Examples \r\n\r\n List of Figures \r\n\r\n Preface \r\n\r\n Who You Are \r\n\r\n What You Need to Know \r\n\r\n What You Need to Have \r\n\r\n How to Use This Book \r\n\r\n The Online Edition \r\n\r\n Some Grammatical Notes \r\n\r\n Contacting the Author \r\n\r\n Acknowledgments \r\n\r\n Part I XML \r\n\r\n Chapter 1 XML for Data \r\n\r\n Motivating XML \r\n\r\n A Thought Experiment \r\n\r\n Robustness \r\n\r\n Extensibility \r\n\r\n Ease-of-Use XML Syntax \r\n\r\n XML Documents \r\n\r\n XML Applications \r\n\r\n Elements and Tags \r\n\r\n Text \r\n\r\n Attributes \r\n\r\n XML Declaration \r\n\r\n Comments \r\n\r\n Processing Instructions \r\n\r\n Entities \r\n\r\n Namespaces \r\n\r\n Validity \r\n\r\n DTDs \r\n\r\n Schemas \r\n\r\n Schematron \r\n\r\n The Last Mile \r\n\r\n Stylesheets \r\n\r\n CSS \r\n\r\n Associating Stylesheets with XML Documents \r\n\r\n XSL \r\n\r\n Summary \r\n\r\n Chapter 2 XML Protocols: XML-RPC and SOAP \r\n\r\n XML as a Message Format \r\n\r\n Envelopes \r\n\r\n Data Representation \r\n\r\n HTTP as a Transport Protocol \r\n\r\n How HTTP Works \r\n\r\n HTTP in Java \r\n\r\n RSS \r\n\r\n Customizing the Request \r\n\r\n Query Strings \r\n\r\n How HTTP POST Works \r\n\r\n XML-RPC \r\n\r\n Data Structures \r\n\r\n Faults \r\n\r\n Validating XML-RPC \r\n\r\n SOAP \r\n\r\n A SOAP Example \r\n\r\n Posting SOAP Documents \r\n\r\n Faults \r\n\r\n Encoding Styles \r\n\r\n SOAP Headers \r\n\r\n SOAP Limitations \r\n\r\n Validating SOAP \r\n\r\n Custom Protocols \r\n\r\n Summary \r\n\r\n Chapter 3 Writing XML with Java \r\n\r\n Fibonacci Numbers \r\n\r\n Writing XML \r\n\r\n Better Coding Practices \r\n\r\n Attributes \r\n\r\n Producing Valid XML \r\n\r\n Namespaces \r\n\r\n Output Streams, Writers, and Encodings \r\n\r\n A Simple XML-RPC Client \r\n\r\n A Simple SOAP Client \r\n\r\n Servlets \r\n\r\n Summary \r\n\r\n Chapter 4 Converting Flat Files to XML \r\n\r\n The Budget \r\n\r\n The Model \r\n\r\n Input \r\n\r\n Determining the Output Format \r\n\r\n Validation \r\n\r\n Attributes \r\n\r\n Building Hierarchical Structures from Flat Data \r\n\r\n Alternatives to Java \r\n\r\n Imposing Hierarchy with XSLT \r\n\r\n The XML Query Language \r\n\r\n Relational Databases \r\n\r\n Summary \r\n\r\n Chapter 5 Reading XML \r\n\r\n InputStreams and Readers \r\n\r\n XML Parsers \r\n\r\n Choosing an XML API \r\n\r\n Choosing an XML Parser \r\n\r\n Available Parsers \r\n\r\n SAX \r\n\r\n DOM \r\n\r\n JAXP \r\n\r\n JDOM \r\n\r\n dom4j \r\n\r\n ElectricXML \r\n\r\n XMLPULL \r\n\r\n Summary \r\n\r\n Part II SAX \r\n\r\n Chapter 6 SAX \r\n\r\n What Is SAX? \r\n\r\n Parsing \r\n\r\n Callback Interfaces \r\n\r\n Implementing ContentHandler \r\n\r\n Using the ContentHandler \r\n\r\n The DefaultHandler Adapter Class \r\n\r\n Receiving Documents \r\n\r\n Receiving Elements \r\n\r\n Handling Attributes \r\n\r\n Receiving Characters \r\n\r\n Receiving Processing Instructions \r\n\r\n Receiving Namespace Mappings \r\n\r\n 'Ignorable White Space' \r\n\r\n Receiving Skipped Entities \r\n\r\n Receiving Locators \r\n\r\n What the ContentHandler Doesn't Tell You \r\n\r\n Summary \r\n\r\n Chapter 7 The XMLReader Interface \r\n\r\n Building Parser Objects \r\n\r\n Input \r\n\r\n InputSource \r\n\r\n EntityResolver \r\n\r\n Exceptions and Errors \r\n\r\n SAXExceptions \r\n\r\n The ErrorHandler Interface \r\n\r\n Features and Properties \r\n\r\n Getting and Setting Features \r\n\r\n Getting and Setting Properties \r\n\r\n Required Features \r\n\r\n Standard Features \r\n\r\n Standard Properties \r\n\r\n Xerces Custom Features \r\n\r\n Xerces Custom Properties \r\n\r\n DTDHandler \r\n\r\n Summary \r\n\r\n Chapter 8 SAX Filters \r\n\r\n The Filter Architecture \r\n\r\n The XMLFilter Interface \r\n\r\n Content Filters \r\n\r\n Filtering Tags \r\n\r\n Filtering Elements \r\n\r\n Filtering Attributes \r\n\r\n Filters That Add Content \r\n\r\n Filters versus Transforms \r\n\r\n The XML Filterlmpl Class \r\n\r\n Parsing Non-XML Documents \r\n\r\n Multihandler Adapters \r\n\r\n Summary \r\n\r\n Part III DOM \r\n\r\n Chapter 9 The Document Object Model \r\n\r\n The Evolution of DOM \r\n\r\n DOM Modules \r\n\r\n Application-Specific DOMs \r\n\r\n Trees \r\n\r\n Document Nodes \r\n\r\n Element Nodes \r\n\r\n Attribute Nodes \r\n\r\n Leaf Nodes \r\n\r\n Nontree Nodes \r\n\r\n What Is and Isn't in the Tree \r\n\r\n DOM Parsers for Java \r\n\r\n Parsing Documents with a DOM Parser \r\n\r\n JAXP DocumentBuilder and DocumentBuilderFactory \r\n\r\n DOM3 Load and Save \r\n\r\n The Node Interface \r\n\r\n Node Types \r\n\r\n Node Properties \r\n\r\n Navigating the Tree \r\n\r\n Modifying the Tree \r\n\r\n Utility Methods \r\n\r\n The NodeList Interface \r\n\r\n JAXP Serialization \r\n\r\n DOMException \r\n\r\n Choosing between SAX and DOM \r\n\r\n Summary \r\n\r\n Chapter 10 Creating XML Documents with DOM \r\n\r\n DOMImplementation \r\n\r\n Locating a DOMImp]ementation \r\n\r\n Implementation-Specific Class \r\n\r\n JAXP DocumentBuilder \r\n\r\n DOM3 DOMImplementationRegistry \r\n\r\n The Document Interface as an Abstract Factory \r\n\r\n The Document Interface as a Node Type \r\n\r\n Getter Methods \r\n\r\n Finding Elements \r\n\r\n Transferring Nodes between Documents \r\n\r\n Normalization \r\n\r\n Summary \r\n\r\n Chapter 11 The DOM Core \r\n\r\n The Element Interface \r\n\r\n Extracting Elements \r\n\r\n Attributes \r\n\r\n The NamedNodeMap Interface \r\n\r\n The CharacterData Interface \r\n\r\n The Text Interface \r\n\r\n The CDATASection Interface \r\n\r\n The EntityReference Interface \r\n\r\n The Attr Interface \r\n\r\n The ProcessingInstruction Interface \r\n\r\n The Comment Interface \r\n\r\n The DocumentType Interface \r\n\r\n The Entity Interface \r\n\r\n The Notation Interface \r\n\r\n Summary \r\n\r\n Chapter 12 The DOM Traversal Module \r\n\r\n NodeIterator \r\n\r\n Constructing NodeIterators with DocumentTraversal \r\n\r\n Liveness \r\n\r\n Filtering by Node Type \r\n\r\n NodeFilter \r\n\r\n TreeWalker \r\n\r\n Summary \r\n\r\n Chapter 13 Output from DOM \r\n\r\n Xerces Serialization \r\n\r\n OutputFormat \r\n\r\n DOM Level 3 \r\n\r\n Creating DOMWriters \r\n\r\n Serialization Features \r\n\r\n Filtering Output \r\n\r\n Summary \r\n\r\n Part IV JDOM \r\n\r\n Chapter 14 JDOM \r\n\r\n What Is JDOM? \r\n\r\n Creating XML Elements with JDOM \r\n\r\n Creating XML Documents with JDOM \r\n\r\n Writing XML Documents with JDOM \r\n\r\n Document Type Declarations \r\n\r\n Namespaces \r\n\r\n Reading XML Documents with JDOM \r\n\r\n Navigating JDOM Trees \r\n\r\n Talking to DOM Programs \r\n\r\n Talking to SAX Programs \r\n\r\n Configuring SAXBuilder \r\n\r\n SAXOutputter \r\n\r\n Java Integration \r\n\r\n Serializing JDOM Objects \r\n\r\n Synchronizing JDOM Objects \r\n\r\n Testing Equality \r\n\r\n Hash Codes \r\n\r\n String Representations \r\n\r\n Cloning \r\n\r\n What JDOM Doesn't Do \r\n\r\n Summary \r\n\r\n Chapter 15 The JDOM Model \r\n\r\n The Document Class \r\n\r\n The Element Class \r\n\r\n Constructors \r\n\r\n Navigation and Search \r\n\r\n Attributes \r\n\r\n The Attribute Class \r\n\r\n The Text Class \r\n\r\n The CDATA Class \r\n\r\n The ProcessingInstruction Class \r\n\r\n The Comment Class \r\n\r\n Namespaces \r\n\r\n The DocType Class \r\n\r\n The EntityRef Class \r\n\r\n Summary \r\n\r\n Part V XPath/XSLT \r\n\r\n Chapter 16 XPath \r\n\r\n Queries \r\n\r\n The XPath Data Model \r\n\r\n Location Paths \r\n\r\n Axes \r\n\r\n Node Tests \r\n\r\n Predicates \r\n\r\n Compound Location Paths \r\n\r\n Absolute Location Paths \r\n\r\n Abbreviated Location Paths \r\n\r\n Combining Location Paths \r\n\r\n Expressions \r\n\r\n Literals \r\n\r\n Operators \r\n\r\n Functions \r\n\r\n XPath Engines \r\n\r\n XPath with Saxon \r\n\r\n XPath with Xalan \r\n\r\n DOM Level 3 XPath \r\n\r\n Namespace Bindings \r\n\r\n Snapshots \r\n\r\n Compiled Expressions \r\n\r\n Jaxen \r\n\r\n Summary \r\n\r\n Chapter 17 XSLT \r\n\r\n XSL Transformations \r\n\r\n Template Rules \r\n\r\n Stylesheets \r\n\r\n Taking the Value of a Node \r\n\r\n Applying Templates \r\n\r\n The Default Template Rules \r\n\r\n Selection \r\n\r\n Calling Templates by Name \r\n\r\n TrAX \r\n\r\n Thread Safety \r\n\r\n Locating Transformers \r\n\r\n The xml-stylesheet Processing Instruction \r\n\r\n Features \r\n\r\n XSLT Processor Attributes \r\n\r\n URI Resolution \r\n\r\n Error Handling \r\n\r\n Passing Parameters to Stylesheets \r\n\r\n Output Properties \r\n\r\n Sources and Results \r\n\r\n Extending XSLT with Java \r\n\r\n Extension Functions \r\n\r\n Extension Elements \r\n\r\n Summary \r\n\r\n Part VI Appendixes \r\n\r\n Appendix A XML API Quick Reference \r\n\r\n SAX \r\n\r\n org.xml.sax \r\n\r\n org.xml.sax.ext \r\n\r\n org.xml.sax.helpers \r\n\r\n DOM \r\n\r\n The DOM Data Model \r\n\r\n org.w3c.dom \r\n\r\n org.w3c.dom.traversal \r\n\r\n JAXP \r\n\r\n javax.xml.parsers \r\n\r\n TrAX \r\n\r\n javax.xml.transform \r\n\r\n javax.xml.transform.stream \r\n\r\n javax.xml.transform.dom \r\n\r\n javax.xml.transform.sax \r\n\r\n JDOM \r\n\r\n org.jdom \r\n\r\n org.jdom.fiher \r\n\r\n org.jdom.input \r\n\r\n org.jdom.output \r\n\r\n org.jdom.transform \r\n\r\n org.jdom.xpath \r\n\r\n XMLPULL \r\n\r\n org.xmlpull.v1 \r\n\r\n Appendix B SOAP 1.1 Schemas \r\n\r\n The SOAP 1.1 Envelope Schema \r\n\r\n The SOAP 1.1 Encoding Schema \r\n\r\n W3C Software Notice and License \r\n\r\n Appendix C Recommended Reading \r\n\r\n Books \r\n\r\n Specifications \r\n\r\n Index \r\n
\r\n
程序设计在于处理复杂性:问题的复杂性和所用的程序设计工具的复杂性. Java的魅力在于其本身的低复杂性, 同时又能很好地处理高度复杂的问题. Java程序的开发周期只有类似的C++程序的一半甚至更少, 而且Java可以方便地处理复杂软件问题:多线程. 分布式. 跨平台. 安全性等. Java从诞生到现在, 已经广泛应用于几乎所有类型软件系统的构建. 尤其在基于Web的系统开发中, Java技术具有独特的优势. 熟悉Java历史的人都知道, Java的前身——编程语言Oak就是致力于电子产品互连的语言, Internet的发展导致了Oak的重生和Java的广为流行. 现在, J2EE技术已经成为企业级Web应用系统的标准平台.
好的程序设计人员不仅仅要掌握优秀的编程工具, 更需要掌握优秀的编程思想. 随着面向对象编程技术数十年的发展, 人们开始提炼和总结面向对象编程中行之有效的. 具有一定普遍意义的方法, 即面向对象的设计模式. 以Gamma. Helm. Johnson和Vlissides合著的经典书籍《设计模式》为开端, 面向对象设计模式的研究和应用成为面向对象程序设计的重要内容. 所有结构良好的面向对象软件系统都包含了大量的设计模式, 能否熟练应用设计模式已经成为衡量程序员水平的至关重要的标准.
本丛书收录了与Java程序设计和Java设计模式相关的经典书籍, 反映了应用Java开发软件系统的最佳经验总结和最新动态.
《Java设计模式》采用方便而简洁的编写风格, 以可视化的Java程序为例, 详细介绍了Gamma. Helm. Johnson和Vlissides合著的经典书籍《设计模式》中列出的所有23种模式. 通过本书, Java程序员可以迅速了解和掌握设计模式的内容, 并在实践中应用设计模式来创建复杂而健壮的Java程序.
《Java模式应用》介绍了基于模式的开发技巧, 演示了使用Java开发各种商务系统中的模式应用. 书中首先概述设计模式, 然后就四种主要模式——创建模式. 行为模式. 结构模式和系统模式展开了详细的论述. 该书还针对系统构建过程中常用的J2EE. JSP. EJB和API等技术作了介绍, 适合具有一定编程基础的Java程序员阅读参考.
《J2EE核心模式》是Sun Java Center的资深设计师的J2EE亲身实践经验的总结. 该书主要描述J2EE关键技术(Java Server Pages, Java Servlet, Enterprise Java Beans, Java Message Services等)的模式. 最佳实践. 设计策略和经过验证的解决方案. 该书介绍了J2EE包括的15个模式的分类和大量的策略, 不仅具有理论深度, 而且非常实用. 该书内容适合J2EE的爱好者. 程序员. 设计师. 开发者和技术管理者. 一句话, 该书适合于设计. 构建和开发J2EE平台应用的所有人.
XML是新一代文档的标准, Web页. 数据. 源码等等, 均可以用XML文档表示. 越来越多的程序员正在使用Java来处理XML文档. 《用Java处理XML》详细论述了如何使用Java来读写XML文档. 该书是目前最新和最全的Java处理XML技术的介绍, 包含内容超过1000页的关于SAX, DOM, JDOM, JAXP, TrAX, XPath, XSLT, SOAP等的讲解. 该书适合于使用Java读写XML文档的Java程序员. 其内容从基本概念到高级应用无所不包, 特别适合作为手册随时参考.
在《实时Java》中, 作为RTSJ专家组的成员之一, Dibble从Java平台特有的实时问题概述开始, 依次讲解了RTSJ各项主要特性的使用方法. 从广泛的实时原理到详细的编程隐患, 该书覆盖了构建有效实时程序所需的一切知识. 其主要内容包括:与非实时代码的互操作性. 实时开发中的取舍以及JVM软件的实时问题, 垃圾收集. 无堆栈访问. 物理内存和“不朽”内存以及无堆栈内存的常数时间分配, 优先级调度. 期限调度以及速率单调分析, 闭包. 异步传输控制. 异步事件以及计时器. 这是一本非常实用的指南, 适用于有经验的Java平台开发人员.
《Java数据结构与算法分析》介绍了常见的数据结构, 如链表. 堆栈. 队列. 树和哈希表等, 并对查找和排序进行了算法分析, 给出了相应的Java实现. 该书逻辑结构严谨, 主次分明, 可用作程序员参考书.
总之, 这套书详细介绍了Java应用的许多重要方面: 从具有普遍性的Java数据结构和算法. Java设计模式. Java模式应用. J2EE核心模式, 到日益显著的Java特殊应用领域(Java处理XML文档和Java实时系统开发). 其内容具有一定的理论深度, 更有重要的实际参考价值.
有鉴于此, 特向Java系统开发和应用领域中不同程度的读者推荐这套书, 相信每位有心的读者都能得到物超所值的收获.
清华大学经济管理学院管理科学与工程系 朱涛 博士
讲授课程:Java程序设计, 面向对象的分析设计方法