- 反射
Ⅰ 对象.getClass()
Builty bt=new Builty();
Class clz=bt.getClass();
Ⅱ 类.class()
clz=Builty.class;
Ⅲ Class.forName("包名.类名")
clz=Class.forName("com.bee.Builty");
Builty bt=(Builty)clz.newInstance();
Builty bt=(Builty)clz.getConstructor().newInstance();
- XML
- 解析方式
SAX(流解析,顺序解析);DOM(文档解析,树结构解析) - SAX解析流程
public class XmlTest {
public static void main(String[] args) throws ParserConfigurationException, SAXException, IOException {
SAXParserFactory factory=SAXParserFactory.newInstance();
SAXParser parse =factory.newSAXParser();
PHandler handler=new PHandler();
parse.parse(Thread.currentThread().getContextClassLoader()
.getResourceAsStream("com/bee/test/test.xml")
,handler);
}
}
class PHandler extends DefaultHandler{
@Override
public void startDocument() throws SAXException {
System.out.println("----解析文档开始----");
}
@Override
public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
System.out.println(qName+"-->解析开始");
}
@Override
public void characters(char[] ch, int start, int length) throws SAXException {
String contents = new String(ch,start,length).trim();
if(contents.length()>0) {
System.out.println("内容为->"+contents);
}else {
System.out.println("内容为->"+"空");
}
}
@Override
public void endElement(String uri, String localName, String qName) throws SAXException {
System.out.println(qName+"-->解析结束开始");
}
@Override
public void endDocument() throws SAXException {
System.out.println("----解析文档结束----");
}
}
- 解析并存储
为了便于阅读,在xml文件中会加入空白字符,使标签呈现出层次。但这些加入的空白字符将被解读为空标签(包括开始标签和结束标签),而且空标签中的值也将被解读为空。这里的空指null。
public class XmlTest {
public static void main(String[] args) throws ParserConfigurationException, SAXException, IOException {
SAXParserFactory factory=SAXParserFactory.newInstance();
SAXParser parse =factory.newSAXParser();
PersonHandler handler=new PersonHandler();
parse.parse(Thread.currentThread().getContextClassLoader()
.getResourceAsStream("com/bee/test/test.xml")
,handler);
List<Person> persons = handler.getPersons();
for(Person p:persons) {
System.out.println(p.getName()+"-->"+p.getAge());
}
}
}
class PersonHandler extends DefaultHandler{
private List<Person> persons ;
private Person person ;
private String tag;
@Override
public void startDocument() throws SAXException {
persons = new ArrayList<Person>();
}
@Override
public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
if(null!=qName) {
tag = qName;
if(tag.equals("person")) {
person = new Person();
}
}
}
@Override
public void characters(char[] ch, int start, int length) throws SAXException {
String contents = new String(ch,start,length).trim();
if(null!=tag) {
if(tag.equals("name")) {
person.setName(contents);
}else if(tag.equals("age")) {
if(contents.length()>0) {
person.setAge(Integer.valueOf(contents));
}
}
}
}
@Override
public void endElement(String uri, String localName, String qName) throws SAXException {
if(null!=qName) {
if(qName.equals("person")) {
persons.add(person);
}
}
tag = null;
}
@Override
public void endDocument() throws SAXException {
}
public List<Person> getPersons() {
return persons;
}
}