<![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{
@Override
publicvoid startDocument()throwsSAXException{
System.out.println("start document");
}
@Override
publicvoid startElement(String uri,String localName,String qName,
Attributes attributes)throwsSAXException{
// qName可以得到元素名称
// 可以通过 attributes得到当前元素的所有属性
System.out.println("<"+ qName +">");
}
@Overrid
publicvoid characters(char[] ch,int start,int length)
throwsSAXException{
// 可以得到元素中的文本信息
System.out.println(newString(ch, start, length));
}
@Override
publicvoid endElement(String uri,String localName,String qName)
throwsSAXException{
System.out.println("<"+ qName +">");
}
@Override
publicvoid endDocument()throwsSAXException{
System.out.println("endDocument");
}
原文地址:http://blog.csdn.net/dydlcsdn/article/details/46456497