📄 buildxml.java
字号:
// Fig. 4.11 : BuildXml.java
// Creates element node, attribute node, comment node,
// processing instruction and a CDATA section.
package com.deitel.jws1.xml;
// Java core packages
import java.io.*;
// Java extension packages
import javax.xml.parsers.*;
import javax.xml.transform.*;
import javax.xml.transform.stream.*;
import javax.xml.transform.dom.*;
// third-party libraries
import org.xml.sax.*;
import org.w3c.dom.*;
public class BuildXml {
private Document document;
public BuildXml( String fileName )
{
DocumentBuilderFactory factory =
DocumentBuilderFactory.newInstance();
// create new DOM tree
try {
// get DocumentBuilder
DocumentBuilder builder =
factory.newDocumentBuilder();
// create root node
document = builder.newDocument();
}
// handle exception thrown by DocumentBuilder
catch ( ParserConfigurationException parserException ) {
parserException.printStackTrace();
}
Element root = document.createElement( "root" );
document.appendChild( root );
// add comment to XML document
Comment simpleComment = document.createComment(
"This is a simple contact list" );
root.appendChild( simpleComment );
// add child element
Node contactNode = createContactNode( document );
root.appendChild( contactNode );
// add processing instruction
ProcessingInstruction pi =
document.createProcessingInstruction(
"myInstruction", "action silent" );
root.appendChild( pi );
// add CDATA section
CDATASection cdata = document.createCDATASection(
"I can add <, >, and ?" );
root.appendChild( cdata );
// write XML document to disk
try {
// create DOMSource for source XML document
Source xmlSource = new DOMSource( document );
// create StreamResult for transformation result
Result result = new StreamResult(
new FileOutputStream( new File( fileName ) ) );
// create TransformerFactory
TransformerFactory transformerFactory =
TransformerFactory.newInstance();
// create Transformer for transformation
Transformer transformer =
transformerFactory.newTransformer();
transformer.setOutputProperty( "indent", "yes" );
// transform and deliver content to client
transformer.transform( xmlSource, result );
}
// handle exception creating TransformerFactory
catch (
TransformerFactoryConfigurationError factoryError ) {
System.err.println( "Error creating " +
"TransformerFactory" );
factoryError.printStackTrace();
}
// handle exception transforming document
catch ( TransformerException transformerError ) {
System.err.println( "Error transforming document" );
transformerError.printStackTrace();
}
// handle exception writing data to file
catch ( IOException ioException ) {
ioException.printStackTrace();
}
}
public Node createContactNode( Document document )
{
// create FirstName and LastName elements
Element firstName = document.createElement( "FirstName" );
Element lastName = document.createElement( "LastName" );
firstName.appendChild( document.createTextNode( "Sue" ) );
lastName.appendChild( document.createTextNode( "Green" ) );
// create contact element
Element contact = document.createElement( "contact" );
// create attribute
Attr genderAttribute = document.createAttribute( "gender" );
genderAttribute.setValue( "F" );
// append attribute to contact element
contact.setAttributeNode( genderAttribute );
contact.appendChild( firstName );
contact.appendChild( lastName );
return contact;
}
public static void main( String args[] )
{
BuildXml buildXml = new BuildXml( args[ 0 ] );
}
}
// **************************************************************************
// * (C) Copyright 2003 by Deitel & Associates, Inc. and Prentice Hall. *
// * All Rights Reserved. *
// * *
// * DISCLAIMER: The authors and publisher of this book have used their *
// * best efforts in preparing the book. These efforts include the *
// * development, research, and testing of the theories and programs *
// * to determine their effectiveness. The authors and publisher make *
// * no warranty of any kind, expressed or implied, with regard to these *
// * programs or to the documentation contained in these books. The authors *
// * and publisher shall not be liable in any event for incidental or *
// * consequential damages in connection with, or arising out of, the *
// * furnishing, performance, or use of these programs. *
// **************************************************************************
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -