<![CDATA[内容]]>或者转义字符:< script >子元素< /script >
简称PI (processing instruction)。处理指令用来指挥解析引擎如何解析XML文档内容。例如,在XML文档中可以使用xml-stylesheet指令,通知XML解析引擎,应用css文件显示xml文档内容。 <?xml-stylesheet type="text/css" href="1.css"?>处理指令必须以“<?”作为开头,以“?>”作为结尾,XML声明语句就是最常见的一种处理指令。
通过 DTD,您的每一个 XML 文件均可携带一个有关其自身格式的描述。通过 DTD,独立的团体可一致地使用某个标准的 DTD 来交换数据。而您的应用程序也可使用某个标准的 DTD 来验证从外部接收到的数据。您还可以使用 DTD 来验证您自身的数据。
l 使用外部DTD SYSTEM
l 使用公共DTD PUBLIC





<!ATTLIST 元素名称 属性名 属性类型 属性约束>
属性类型 CDATA (字符串)
属性约束 #REQUIRED 这个代表属性必须有。
#FIXED 属性值的绑定
<?xml version="1.0" encoding="UTF-8" standalone="no"?><!-- 使用内容的dtd --><books><bookkuan=""><bookname>红楼梦</bookname><author>小张</author><value>15.6</value></book><bookkuan=""><bookname>爱我是</bookname><author>撒地方</author></book></books>
publicclass test1 {/*** @param args* @throws ParserConfigurationException* @throws IOException* @throws SAXException* @throws TransformerException*/publicstaticvoid main(String[] args)throwsParserConfigurationException,SAXException,IOException,TransformerException{// addElement();// updateText();deleteElement();}/**删除元素* @throws ParserConfigurationException* @throws SAXException* @throws IOException* @throws TransformerException* @throws TransformerFactoryConfigurationError* @throws TransformerConfigurationException*/privatestaticvoid deleteElement()throwsParserConfigurationException,SAXException,IOException,TransformerConfigurationException,TransformerFactoryConfigurationError,TransformerException{Document document = getDocument("dtd/books.xml");NodeList nodeList=document.getElementsByTagName("author");Element element=(Element) nodeList.item(0);//通过父亲来删除子节点element.getParentNode().removeChild(element);domToFile(document);}/**添加元素* @throws ParserConfigurationException* @throws SAXException* @throws IOException* @throws TransformerFactoryConfigurationError* @throws TransformerConfigurationException* @throws TransformerException*/privatestaticvoid addElement()throwsParserConfigurationException,SAXException,IOException,TransformerFactoryConfigurationError,TransformerConfigurationException,TransformerException{Document document = getDocument("dtd/books.xml");Element element= document.createElement("value");element.setTextContent("15.6");document.getElementsByTagName("book").item(0).appendChild(element);domToFile(document);}//修改publicstaticvoid updateText()throwsParserConfigurationException,SAXException,IOException,TransformerConfigurationException,TransformerFactoryConfigurationError,TransformerException{Document document = getDocument("dtd/books.xml");NodeList nodeList=document.getElementsByTagName("author");Element element=(Element) nodeList.item(1);element.setTextContent("小红");domToFile(document);}/**因为是加载到内存,所以需要回写到xml文件中* @param document* @throws TransformerFactoryConfigurationError* @throws TransformerConfigurationException* @throws TransformerException*/privatestaticvoid domToFile(Document document)throwsTransformerFactoryConfigurationError,TransformerConfigurationException,TransformerException{TransformerFactory factory=TransformerFactory.newInstance();Transformer tf=factory.newTransformer();tf.transform(newDOMSource(document),newStreamResult("dtd/books.xml"));}/**得到document* @param file* @return* @throws ParserConfigurationException* @throws SAXException* @throws IOException*/publicstaticDocument getDocument(String file)throwsParserConfigurationException,SAXException,IOException{// TODO Auto-generated method stub// 解析器工厂DocumentBuilderFactory builderFactory =DocumentBuilderFactory.newInstance();// 解析器DocumentBuilder db = builderFactory.newDocumentBuilder();Document document =(Document) db.parse(file);return document;}}
// 1.得到sax解析器工厂SAXParserFactory factory =SAXParserFactory.newInstance();// 2.得到sax解析器SAXParser parse = factory.newSAXParser();// parse.parse("xml/books.xml", new MyHandle()); //这句话可以替换下面的三句// 3.得到读取器XMLReader reader = parse.getXMLReader();// 4设置读取器的事件处理器reader.setContentHandler(newMyHandle());// 5.真正读取文件reader.parse("xml/books.xml");classMyHandleextendsDefaultHandler{@Overridepublicvoid startDocument()throwsSAXException{System.out.println("start document");}@Overridepublicvoid startElement(String uri,String localName,String qName,Attributes attributes)throwsSAXException{// qName可以得到元素名称// 可以通过 attributes得到当前元素的所有属性System.out.println("<"+ qName +">");}@Overridpublicvoid characters(char[] ch,int start,int length)throwsSAXException{// 可以得到元素中的文本信息System.out.println(newString(ch, start, length));}@Overridepublicvoid endElement(String uri,String localName,String qName)throwsSAXException{System.out.println("<"+ qName +">");}@Overridepublicvoid endDocument()throwsSAXException{System.out.println("endDocument");}
原文地址:http://blog.csdn.net/dydlcsdn/article/details/46456497