网络通信: 套接字通信
网络传输协议
TCP 面向连接的 数据流 数据传输安全 发送和接收包的顺序一样
UDP 面向不连接 数据报 数据传输不安全 可能发生丢包 接收和发送的顺序可能不一样
TCP:
ServerSocket port 端口 0-65536
Socket accept()
Socket host port
InputStream() 接收消息
OutputStream() 发送消息
UDP:
DatagramSocket
receive(DatagramPacket p)
send(DatagramPacket p)
DatagramPacket
65536-8
InetAddress
int port
网络通信 服务器 多线程
XML 可扩展标记语言
存储和传输数据
元素 节点
标签 属性 文本内容
有且只有一个根元素
<![CDATA[文本内容]]>
< <
> >
& &
’ ’
" "
HTML 显示数据
XML解析:
SAX Simple API for XML
DOM Document Object Model
第三方jar
dom4j
SAXReader 能够把xml文件加载成 Document对象
SAXReader reader = new SAXReader();
Document doc = reader.read("");
Element rootEle = doc.getRootElement();
String getName();
String getTextTrim();
String getText();
Attribute attribute(int index)
Attribute attribute(String name)
List attributes();
Element element(String name)
List elements();
DocumentHelper
static Document createDocument();
Element addElement(String name);
Element addElement(String name,String text)
Element addAttribute(string name,string value)
Element addText(string text)
XMLWriter
XMLWriter writer = new XMLWriter();
writer.setOutputStream(OutputStream os);
writer.write(Document doc);
遍历Document
查找
Document inherit Node
查找节点(元素)
public List selectNodes(String xpathExpression)
XPATH 表达式 正则表达式
用路径表达式来在xml文档中进行导航(搜索)
用路径来表示内容在xml文档中的位置
路径:
绝对路径
/ 表示的是文件名
相对路径
. 当前节点
… 父节点 上一级节点
斜杠(/)作为路径内部的分割符
/根节点/
/nodename 节点名称
/ 代表文件下查找
// 表示选择任意位置的所有节点
@ 表示选择某个属性
通配符:
* 表示匹配任何元素节点
@* 表示匹配任何属性值
node() 表示匹配任何类型的节点
选择:
[n] 匹配第n个
[last()]
[position() < n]
[position() > n]
@id=‘1’
nodename[@属性名=‘值’]
//nodename 所有为nodename的节点都匹配出来
/x/x/* 某个节点下所有的节点
解析(读取) 构造Document 写入到文件
Document 遍历 查找
Properties extends HashTable
key – value
void load(InputStream inStream)
从输入流中读取属性列表(键和元素对)。
void load(Reader reader)
按简单的面向行的格式从输入字符流中读取属性列表(键和元素对)。
void loadFromXML(InputStream in)
将指定输入流中由 XML 文档所表示的所有属性加载到此属性表中。
String getProperty(String key) 通过key索引value 如果key不存在返回null
String getProperty(String key, String defaultValue)
Set stringPropertyNames() 取得所有key的集合