分享
 
 
 

Java XML教程(附:源程序A)

王朝java/jsp·作者佚名  2008-05-31
窄屏简体版  字體: |||超大  

来源:http://d23xapp2.cn.ibm.com/developerWorks/edUCation/XML/xmlJava/tutorial/xmljava-1-1.Html

sonnet.xml

这是在本教程中贯穿使用的示例 XML 文档。

Shakespeare

William

British

1564

1616

My mistress` eyes are nothing like the sun,

Coral is far more red than her lips red.

If snow be white, why then her breasts are dun,

If hairs be wires, black wires grow on her head.

I have seen roses damasked, red and white,

But no such roses see I in her cheeks.

And in some perfumes is there more delight

Than in the breath that from my mistress reeks.

I love to hear her speak, yet well I know

That music hath a far more pleasing sound.

I grant I never saw a goddess go,

My mistress when she walks, treads on the ground.

And yet, by Heaven, I think my love as rare

As any she belied with false compare.

sonnet.dtd

这是我们示例文档所用的 DTD。

type (Shakespearean Petrarchan) "Shakespearean">

line,line,line,line,

line,line,line,line,

line,line) >

year-of-birth?,year-of-death?) >

domOne.java

这是我们的第一个 DOM 应用。它解析一个 XML 文档并将其内容输出到标准输出。

/*

* (C) Copyright IBM Corp. 1999 All rights reserved.

*

* US Government Users Restricted Rights Use, duplication or

* disclosure restricted by GSA ADP Schedule Contract with IBM Corp.

*

* The program is provided "as is" without any warranty eXPress or

* implied, including the warranty of non-infringement and the implied

* warranties of merchantibility and fitness for a particular purpose.

* IBM will not be liable for any damages suffered by you as a result

* of using the Program. In no event will IBM be liable for any

* special, indirect or consequential damages or lost profits even if

* IBM has been advised of the possibility of their occurrence. IBM

* will not be liable for any third party claims against you.

*/

import java.io.OutputStreamWriter;

import java.io.PrintWriter;

import java.io.UnsupportedEncodingException;

import org.w3c.dom.Attr;

import org.w3c.dom.Document;

import org.w3c.dom.NamedNodeMap;

import org.w3c.dom.Node;

import org.w3c.dom.NodeList;

import com.ibm.xml.parsers.*;

/**

* domOne.java

* Illustrates how to go through a DOM tree.

*/

public class domOne

{

public void parseAndPrint(String uri)

{

Document doc = null;

try

{

DOMParser parser = new DOMParser();

parser.parse(uri);

doc = parser.getDocument();

}

catch (Exception e)

{

System.err.println("Sorry, an error occurred: " + e);

}

// We`ve parsed the document now, so let`s print it.

if (doc != null)

printDOMTree(doc);

}

/** Prints the specified node, then prints all of its children. */

public void printDOMTree(Node node)

{

int type = node.getNodeType();

switch (type)

{

// print the document element

case Node.DOCUMENT_NODE:

{

System.out.println("");

printDOMTree(((Document)node).getDocumentElement());

break;

}

// print element with attributes

case Node.ELEMENT_NODE:

{

System.out.print("<");

System.out.print(node.getNodeName());

NamedNodeMap attrs = node.getAttributes();

for (int i = 0; i < attrs.getLength(); i++)

{

Node attr = attrs.item(i);

System.out.print(" " + attr.getNodeName() +

"="" + attr.getNodeValue() +

""");

}

System.out.println(">");

NodeList children = node.getChildNodes();

if (children != null)

{

int len = children.getLength();

for (int i = 0; i < len; i++)

printDOMTree(children.item(i));

}

break;

}

// handle entity reference nodes

case Node.ENTITY_REFERENCE_NODE:

{

System.out.print("&");

System.out.print(node.getNodeName());

System.out.print(";");

break;

}

// print cdata sections

case Node.CDATA_SECTION_NODE:

{

System.out.print(" System.out.print(node.getNodeValue());

System.out.print("]]>");

break;

}

// print text

case Node.TEXT_NODE:

{

System.out.print(node.getNodeValue());

break;

}

// print processing instruction

case Node.PROCESSING_INSTRUCTION_NODE:

{

System.out.print(" System.out.print(node.getNodeName());

String data = node.getNodeValue();

{

System.out.print(" ");

System.out.print(data);

}

System.out.print("?>");

break;

}

}

if (type == Node.ELEMENT_NODE)

{

System.out.println();

System.out.print(" System.out.print(node.getNodeName());

System.out.print(`>`);

}

}

/** Main program entry point. */

public static void main(String argv[])

{

if (argv.length == 0)

{

System.out.println("Usage: java domOne uri");

System.out.println(" where uri is the URI of the XML document you want to print.");

System.out.println(" Sample: java domOne sonnet.xml");

System.exit(1);

}

domOne d1 = new domOne();

d1.parseAndPrint(argv[0]);

}

}

domCounter.java

这段代码解析一个 XML 文档,然后遍历 DOM 树来采集有关该文档的数据。当数据采集后将其输出到标准输出。

/*

* (C) Copyright IBM Corp. 1999 All rights reserved.

*

* US Government Users Restricted Rights Use, duplication or

* disclosure restricted by GSA ADP Schedule Contract with IBM Corp.

*

* The program is provided "as is" without any warranty express or

* implied, including the warranty of non-infringement and the implied

* warranties of merchantibility and fitness for a particular purpose.

* IBM will not be liable for any damages suffered by you as a result

* of using the Program. In no event will IBM be liable for any

* special, indirect or consequential damages or lost profits even if

* IBM has been advised of the possibility of their occurrence. IBM

* will not be liable for any third party claims against you.

*/

import java.io.OutputStreamWriter;

import java.io.PrintWriter;

import java.io.UnsupportedEncodingException;

import org.w3c.dom.Document;

import org.w3c.dom.Node;

import org.w3c.dom.NodeList;

import com.ibm.xml.parsers.DOMParser;

/**

* domCounter.java

* This code creates a DOM parser, parses a document, then

* prints statistics about the number and type of nodes

* found in the document.

*/

public class domCounter

{

int documentNodes = 0;

int elementNodes = 0;

int entityReferenceNodes = 0;

int cdataSections = 0;

int textNodes = 0;

int processingInstructions = 0;

public void parseAndCount(String uri)

{

Document doc = null;

try

{

DOMParser parser = new DOMParser();

parser.parse(uri);

doc = parser.getDocument();

}

catch (Exception e)

{

System.err.println("Sorry, an error occurred: " + e);

}

// We`ve parsed the document now, so let`s scan the DOM tree and

// print the statistics.

if (doc != null)

{

scanDOMTree(doc);

System.out.println("Document Statistics for " + uri + ":");

System.out.println("====================================");

System.out.println("Document Nodes: " + documentNodes);

System.out.println("Element Nodes: " + elementNodes);

System.out.println("Entity Reference Nodes: " + entityReferenceNodes);

System.out.println("CDATA Sections: " + cdataSections);

System.out.println("Text Nodes: " + textNodes);

System.out.println("Processing Instructions: " + processingInstructions);

System.out.println(" ----------");

int totalNodes = documentNodes + elementNodes + entityReferenceNodes +

cdataSections + textNodes + processingInstructions;

System.out.println("Total: " + totalNodes + " Nodes");

}

}

/** Scans the DOM tree and counts the different types of nodes. */

public void scanDOMTree(Node node)

{

int type = node.getNodeType();

switch (type)

{

case Node.DOCUMENT_NODE:

documentNodes++;

scanDOMTree(((Document)node).getDocumentElement());

break;

case Node.ELEMENT_NODE:

elementNodes++;

NodeList children = node.getChildNodes();

if (children != null)

{

int len = children.getLength();

for (int i = 0; i < len; i++)

scanDOMTree(children.item(i));

}

break;

case Node.ENTITY_REFERENCE_NODE:

entityReferenceNodes++;

break;

case Node.CDATA_SECTION_NODE:

cdataSections++;

break;

case Node.TEXT_NODE:

textNodes++;

break;

case Node.PROCESSING_INSTRUCTION_NODE:

processingInstructions++;

break;

}

}

/** Main program entry point. */

public static void main(String argv[])

{

if (argv.length == 0)

{

System.out.println("Usage: java domCounter uri");

System.out.println(" where uri is the URI of your XML document.");

System.out.println(" Sample: java domCounter sonnet.xml");

System.exit(1);

}

domCounter dc = new domCounter();

dc.parseAndCount(argv[0]);

}

}

saxOne.java

/*

* (C) Copyright IBM Corp. 1999 All rights reserved.

*

* US Government Users Restricted Rights Use, duplication or

* disclosure restricted by GSA ADP Schedule Contract with IBM Corp.

*

* The program is provided "as is" without any warranty express or

* implied, including the warranty of non-infringement and the implied

* warranties of merchantibility and fitness for a particular purpose.

* IBM will not be liable for any damages suffered by you as a result

* of using the Program. In no event will IBM be liable for any

* special, indirect or consequential damages or lost profits even if

* IBM has been advised of the possibility of their occurrence. IBM

* will not be liable for any third party claims against you.

*/

import java.io.OutputStreamWriter;

import java.io.PrintWriter;

import java.io.UnsupportedEncodingException;

import org.xml.sax.AttributeList;

import org.xml.sax.HandlerBase;

import org.xml.sax.Parser;

import org.xml.sax.SAXException;

import org.xml.sax.SAXParseException;

import org.xml.sax.helpers.ParserFactory;

import com.ibm.xml.parsers.SAXParser;

/**

* saxOne.java

* This sample program illustrates how to use a SAX parser. It

* parses a document and writes the document? contents back to

* standard output.

*/

public class saxOne

extends HandlerBase

{

public void parseURI(String uri)

{

SAXParser parser = new SAXParser();

parser.setDocumentHandler(this);

parser.setErrorHandler(this);

try

{

parser.parse(uri);

}

catch (Exception e)

{

System.err.println(e);

}

}

/** Processing instruction. */

public void processingInstruction(String target, String data)

{

System.out.print(" System.out.print(target);

if (data != null && data.length() > 0)

{

System.out.print(` `);

System.out.print(data);

}

System.out.print("?>");

}

/** Start document. */

public void startDocument()

{

System.out.println("");

}

/** Start element. */

public void startElement(String name, AttributeList attrs)

{

System.out.print("<");

System.out.print(name);

if (attrs != null)

{

int len = attrs.getLength();

for (int i = 0; i < len; i++)

{

System.out.print(" ");

System.out.print(attrs.getName(i));

System.out.print("="");

System.out.print(attrs.getValue(i));

System.out.print(""");

}

}

System.out.print(">");

}

/** Characters. */

public void characters(char ch[], int start, int length)

{

System.out.print(new String(ch, start, length));

}

/** Ignorable whitespace. */

public void ignorableWhitespace(char ch[], int start, int length)

{

characters(ch, start, length);

}

/** End element. */

public void endElement(String name)

{

System.out.print(" System.out.print(name);

System.out.print(">");

}

/** End document. */

public void endDocument()

{

// No need to do anything.

}

//

// ErrorHandler methods

//

/** Warning. */

public void warning(SAXParseException ex)

{

System.err.println("[Warning] "+

getLocationString(ex)+": "+

ex.getMessage());

}

/** Error. */

public void error(SAXParseException ex)

{

System.err.println("[Error] "+

getLocationString(ex)+": "+

ex.getMessage());

}

/** Fatal error. */

public void fatalError(SAXParseException ex)

throws SAXException

{

System.err.println("[Fatal Error] "+

getLocationString(ex)+": "+

ex.getMessage());

throw ex;

}

/** Returns a string of the location. */

private String getLocationString(SAXParseException ex)

{

StringBuffer str = new StringBuffer();

String systemId = ex.getSystemId();

if (systemId != null)

{

int index = systemId.lastIndexOf(`/`);

if (index != -1)

systemId = systemId.substring(index + 1);

str.append(systemId);

}

str.append(`:`);

str.append(ex.getLineNumber());

str.append(`:`);

str.append(ex.getColumnNumber());

return str.toString();

}

/** Main program entry point. */

public static void main(String argv[])

{

if (argv.length == 0)

{

System.out.println("Usage: java saxOne uri");

System.out.println(" where uri is the URI of your XML document.");

System.out.println(" Sample: java saxOne sonnet.xml");

System.exit(1);

}

saxOne s1 = new saxOne();

s1.parseURI(argv[0]);

}

}

saxCounter.java

/*

* (C) Copyright IBM Corp. 1999 All rights reserved.

*

* US Government Users Restricted Rights Use, duplication or

* disclosure restricted by GSA ADP Schedule Contract with IBM Corp.

*

* The program is provided "as is" without any warranty express or

* implied, including the warranty of non-infringement and the implied

* warranties of merchantibility and fitness for a particular purpose.

* IBM will not be liable for any damages suffered by you as a result

* of using the Program. In no event will IBM be liable for any

* special, indirect or consequential damages or lost profits even if

* IBM has been advised of the possibility of their occurrence. IBM

* will not be liable for any third party claims against you.

*/

import java.io.OutputStreamWriter;

import java.io.PrintWriter;

import java.io.UnsupportedEncodingException;

import org.xml.sax.AttributeList;

import org.xml.sax.HandlerBase;

import org.xml.sax.Parser;

import org.xml.sax.SAXException;

import org.xml.sax.SAXParseException;

import org.xml.sax.helpers.ParserFactory;

import com.ibm.xml.parsers.SAXParser;

/**

* saxCounter.java

* This sample program calculates statistics for an XML document,

* based on the SAX events received. When the parse is complete,

* it prints the statistics to standard output.

*/

public class saxCounter

extends HandlerBase

{

int startDocumentEvents = 0;

int endDocumentEvents = 0;

int startElementEvents = 0;

int endElementEvents = 0;

int processingInstructionEvents = 0;

int characterEvents = 0;

int ignorableWhitespaceEvents = 0;

int warningEvents = 0;

int errorEvents = 0;

int fatalErrorEvents = 0;

public void parseURI(String uri)

{

SAXParser parser = new SAXParser();

parser.setDocumentHandler(this);

parser.setErrorHandler(this);

try

{

parser.parse(uri);

}

catch (Exception e)

{

System.err.println(e);

}

System.out.println("Document Statistics for " + uri + ":");

System.out.println("====================================");

System.out.println("DocumentHandler Events:");

System.out.println(" startDocument " +

startDocumentEvents);

System.out.println(" endDocument " +

endDocumentEvents);

System.out.println(" startElement " +

startElementEvents);

System.out.println(" endElement " +

endElementEvents);

System.out.println(" processingInstruction " +

processingInstructionEvents);

System.out.println(" character " +

characterEvents);

System.out.println(" ignorableWhitespace " +

ignorableWhitespaceEvents);

System.out.println("ErrorHandler Events:");

System.out.println(" warning " +

warningEvents);

System.out.println(" error " +

errorEvents);

System.out.println(" fatalError " +

fatalErrorEvents);

System.out.println(" ----------");

int totalEvents = startDocumentEvents + endDocumentEvents +

startElementEvents + endElementEvents +

processingInstructionEvents +

characterEvents + ignorableWhitespaceEvents +

warningEvents + errorEvents + fatalErrorEvents;

System.out.println("Total: " +

totalEvents + " Events");

}

/** Processing instruction. */

public void processingInstruction(String target, String data)

{

processingInstructionEvents++;

}

/** Start document. */

public void startDocument()

{

startDocumentEvents++;

}

/** Start element. */

public void startElement(String name, AttributeList attrs)

{

startElementEvents++;

}

/** Characters. */

public void characters(char ch[], int start, int length)

{

characterEvents++;

}

/** Ignorable whitespace. */

public void ignorableWhitespace(char ch[], int start, int length)

{

ignorableWhitespaceEvents++;

}

/** End element. */

public void endElement(String name)

{

endElementEvents++;

}

/** End document. */

public void endDocument()

{

endDocumentEvents++;

}

//

// ErrorHandler methods

//

/** Warning. */

public void warning(SAXParseException ex)

{

warningEvents++;

}

/** Error. */

public void error(SAXParseException ex)

{

errorEvents++;

}

/** Fatal error. */

public void fatalError(SAXParseException ex)

throws SAXException

{

fatalErrorEvents++;

throw ex;

}

/** Main program entry point. */

public static void main(String argv[])

{

if (argv.length == 0)

{

System.out.println("Usage: java saxCounter uri");

System.out.println(" where uri is the URI of your XML document.");

System.out.println(" Sample: java saxCounter sonnet.xml");

System.exit(1);

}

saxCounter sc = new saxCounter();

sc.parseURI(argv[0]);

} }

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有