oracle xml处理
来源:互联网 发布:免费医疗软件 编辑:程序博客网 时间:2024/05/01 04:58
【原创】编写Oracle存储过程,按照条件把数据导出至XML文件需要解析的xml文件:people.xml
1 <?xml version="1.0"?>
2 <PEOPLE>
3 <PERSON PERSONID="E01">
4 <NAME>Tony Blair</NAME>
5 <ADDRESS>10 Downing Street, London, UK</ADDRESS>
6 <TEL>(061) 98765</TEL>
7 <FAX>(061) 98768</FAX>
8 <EMAIL>blair@everywhere.com</EMAIL>
9 </PERSON>
10 <PERSON PERSONID="E02">
11 <NAME>Bill Clinton</NAME>
12 <ADDRESS>White House, USA</ADDRESS>
13 <TEL>(001) 6400 98765</TEL>
14 <FAX>(001) 6400 98769</FAX>
15 <EMAIL>bill@everywhere.com</EMAIL>
16 </PERSON>
17 <PERSON PERSONID="E03">
18 <NAME>Tom Cruise</NAME>
19 <ADDRESS>57 Jumbo Street, New York, USA</ADDRESS>
20 <TEL>(001) 4500 67859</TEL>
21 <FAX>(001) 4500 67895</FAX>
22 <EMAIL>cruise@everywhere.com</EMAIL>
23 </PERSON>
24 <PERSON PERSONID="E04">
25 <NAME>Linda Goodman</NAME>
26 <ADDRESS>78 Crax Lane, London, UK</ADDRESS>
27 <TEL>(061) 54 56789</TEL>
28 <FAX>(061) 54 56772</FAX>
29 <EMAIL>linda@everywhere.com</EMAIL>
30 </PERSON>
31 </PEOPLE>
我以scott用户为例,新建表:
1 CREATE TABLE PEOPLE
2 (
3 PERSONID VARCHAR2(4) PRIMARY KEY,
4 NAME VARCHAR2(50),
5 ADDRESS VARCHAR2(200),
6 TEL VARCHAR2(20),
7 FAX VARCHAR2(20),
8 EMAIL VARCHAR2(100)
9 );
假设表里面已经有数据,如果想从XML插入数据请看【原创】编写Oracle存储过程解析XML,并把数据持久化
以下是把查询结果生成XML文件的存储过程代码:
1 /**
2 *sqlStr 附加的查询条件 如:where PERSONID = 'E01',查询所有输入''
3 *file_path 文件保存路径 如:D:\OracleTest\outpeople.xml
4 **/
5 CREATE OR REPLACE PROCEDURE OUTPUTPEOPLE(sqlStr VARCHAR2,file_path VARCHAR2)
6 AS
7 personRow PEOPLE%ROWTYPE; --获取游标的行变量
8 TYPE person_cur IS REF CURSOR; --自定义REF游标
9 cur person_cur;
10 tempSql varchar2(500) := 'SELECT * FROM PEOPLE '; --初始的查询语句
11 doc xmlDom.DOMDocument := xmldom.newDOMDocument; -- 创建文档对象
12 main_node xmlDom.DOMNode := xmldom.makeNode(doc); -- 获得文档节点
13 root_elmt xmlDom.DOMElement:= xmldom.createElement(doc, 'PEOPLE'); -- 创建根元素
14 --==================================================
15 --以下定义元素
16 person_elmt xmlDom.DOMElement; --定义PERSON元素
17 name_elmt xmlDom.DOMElement; --定义NAME元素
18 address_elmt xmlDom.DOMElement; --定义ADDRESS元素
19 tel_elmt xmlDom.DOMElement; --定义TEL元素
20 email_elmt xmlDom.DOMElement; --定义EMAIL元素
21 --==================================================
22 --以下定义节点
23 root_node xmlDom.DOMNode; --定义PEOPLE节点
24 person_node xmlDom.DOMNode; --定义PERSON节点
25 name_node xmlDom.DOMNode; --定义NAME节点
26 address_node xmlDom.DOMNode; --定义ADDRESS节点
27 tel_node xmlDom.DOMNode; --定义TEL节点
28 email_node xmlDom.DOMNode; --定义EMAIL节点
29 temp_node xmlDom.DOMNode;
30 BEGIN
31 -- 向文档节点加入根节点:<PEOPLE></PEOPLE>
32 root_node := xmldom.appendChild(main_node, xmldom.makeNode(root_elmt));
33 --附加查询条件
34 tempSql := tempSql||sqlStr;
35 --打开游标
36 OPEN cur FOR tempSql;
37 --遍历游标
38 LOOP
39 FETCH cur INTO personRow;
40 EXIT WHEN cur%NOTFOUND;
41 --===========================================================================--
42 person_elmt := xmldom.createElement(doc, 'PERSON'); --创建PERSON元素
43 -- 向PEOPLE节点加入PERSON节点<PERSON></PERSON>
44 person_node := xmldom.appendChild(root_node, xmldom.makeNode(person_elmt));
45 --===========================================================================--
46 --向PERSON节点加入属性PERSONID
47 xmlDom.SETATTRIBUTE( person_elmt, 'PERSONID', personRow.personId );
48 --===========================================================================--
49 name_elmt := xmldom.createElement(doc, 'NAME'); --创建NAME元素
50 --向PERSON节点加入子节点NAME
51 name_node := xmldom.appendChild(person_node,xmlDom.makeNode(name_elmt));
52 --向NAME节点加入文本
53 temp_node := xmldom.appendChild(name_node , xmlDom.makeNode(xmldom.createTextNode(doc,personRow.name)));
54 --===========================================================================--
55 address_elmt := xmldom.createElement(doc, 'ADDRESS'); --创建ADDRESS元素
56 --向PERSON节点加入子节点ADDRESS
57 address_node := xmldom.appendChild(person_node,xmlDom.makeNode(address_elmt));
58 --向ADDRESS节点加入文本
59 temp_node := xmldom.appendChild(address_node, xmlDom.makeNode(xmldom.createTextNode(doc,personRow.address)));
60 --===========================================================================--
61 tel_elmt := xmldom.createElement(doc, 'TEL'); --创建TEL元素
62 --向TEL节点加入子节点NAME
63 tel_node := xmldom.appendChild(person_node,xmlDom.makeNode(tel_elmt));
64 --向TEL节点加入文本
65 temp_node := xmldom.appendChild(tel_node, xmlDom.makeNode(xmldom.createTextNode(doc,personRow.tel)));
66 --===========================================================================--
67 email_elmt := xmldom.createElement(doc, 'EMAIL'); --创建EMAIL元素
68 --向PERSON节点加入子节点EMAIL
69 email_node := xmldom.appendChild(person_node,xmlDom.makeNode(email_elmt));
70 --向EMAIL节点加入文本
71 temp_node := xmldom.appendChild(email_node, xmlDom.makeNode(xmldom.createTextNode(doc,personRow.email)));
72 --===========================================================================--
73 END LOOP;
74 CLOSE cur;
75 --写入硬盘
76 xmlDom.writeToFile(doc,file_path,'GBK');
77 EXCEPTION
78 WHEN OTHERS THEN
79 DBMS_output.PUT_LINE(SQLERRM);
80 END OUTPUTPEOPLE;
Jam Chan 2008-03-19 21:48 发表评论【原创】编写Oracle存储过程解析XML,并把数据持久化2008年3月19日 21:40需要解析的xml文件:people.xml
1 <?xml version="1.0"?>
2 <PEOPLE>
3 <PERSON PERSONID="E01">
4 <NAME>Tony Blair</NAME>
5 <ADDRESS>10 Downing Street, London, UK</ADDRESS>
6 <TEL>(061) 98765</TEL>
7 <FAX>(061) 98768</FAX>
8 <EMAIL>blair@everywhere.com</EMAIL>
9 </PERSON>
10 <PERSON PERSONID="E02">
11 <NAME>Bill Clinton</NAME>
12 <ADDRESS>White House, USA</ADDRESS>
13 <TEL>(001) 6400 98765</TEL>
14 <FAX>(001) 6400 98769</FAX>
15 <EMAIL>bill@everywhere.com</EMAIL>
16 </PERSON>
17 <PERSON PERSONID="E03">
18 <NAME>Tom Cruise</NAME>
19 <ADDRESS>57 Jumbo Street, New York, USA</ADDRESS>
20 <TEL>(001) 4500 67859</TEL>
21 <FAX>(001) 4500 67895</FAX>
22 <EMAIL>cruise@everywhere.com</EMAIL>
23 </PERSON>
24 <PERSON PERSONID="E04">
25 <NAME>Linda Goodman</NAME>
26 <ADDRESS>78 Crax Lane, London, UK</ADDRESS>
27 <TEL>(061) 54 56789</TEL>
28 <FAX>(061) 54 56772</FAX>
29 <EMAIL>linda@everywhere.com</EMAIL>
30 </PERSON>
31 </PEOPLE>
我以scott用户为例,新建表:
1 CREATE TABLE PEOPLE
2 (
3 PERSONID VARCHAR2(4) PRIMARY KEY,
4 NAME VARCHAR2(50),
5 ADDRESS VARCHAR2(200),
6 TEL VARCHAR2(20),
7 FAX VARCHAR2(20),
8 EMAIL VARCHAR2(100)
9 );
解析并持久化的存储过程代码:
1 /**
2 *file_path 需要解析的XML文件路径 如:D:\OracleTest\people.xml
3 *log_path 保存日志的文件的路径 如: D:\OracleTest\xmllog.txt
4 **/
5
6 CREATE OR REPLACE PROCEDURE addPerson(file_path VARCHAR2,log_path VARCHAR2)
7 AS
8 --//XML解析器
9 xmlPar XMLPARSER.parser := XMLPARSER.NEWPARSER;
10 --//DOM文档对象
11 doc xmldom.DOMDocument;
12 len integer;
13 personNodes xmldom.DOMNodeList;
14 chilNodes xmldom.DOMNodeList;
15 tempNode xmldom.DOMNode;
16 tempArrMap xmldom.DOMNamedNodeMap;
17 --================================
18 --以下变量用于获取XML节点的值
19 pid varchar2(4);
20 name varchar2(50);
21 address varchar2(200);
22 tel varchar2(20);
23 fax varchar2(20);
24 email varchar(100);
25 tmp integer;
26 --================================
27 BEGIN
28 xmlPar := xmlparser.newParser;
29 xmlparser.setErrorLog( xmlPar, log_path);
30 xmlparser.parse(xmlPar, file_path);
31 doc := xmlparser.getDocument( xmlPar );
32 -- 释放解析器实例
33 xmlparser.freeParser(xmlPar);
34 -- 获取所有PERSON元素
35 personNodes := xmldom.getElementsByTagName( doc, 'PERSON' );
36 len := xmldom.getLength( personNodes );
37 --遍历所有PERSON元素
38 FOR i in 0..len-1
39 LOOP
40 --获取第i个PERSON
41 tempNode := xmldom.item( personNodes, i );
42 --所有属性
43 tempArrMap := xmldom.getAttributes(tempNode);
44 --获取PERSONID的值
45 pid := xmldom.getNodeValue(xmldom.getNamedItem(tempArrMap,'PERSONID'));
46 --获取子元素的值
47 chilNodes := xmldom.getChildNodes(tempNode);
48 tmp := xmldom.GETLENGTH( chilNodes );
49 name := xmldom.getNodeValue(xmldom.getFirstChild(xmldom.item( chilNodes, 0 )));
50 address := xmldom.getNodeValue(xmldom.getFirstChild(xmldom.item( chilNodes, 1 )));
51 tel := xmldom.getNodeValue(xmldom.getFirstChild(xmldom.item( chilNodes, 2 )));
52 fax := xmldom.getNodeValue(xmldom.getFirstChild(xmldom.item( chilNodes, 3 )));
53 email := xmldom.getNodeValue(xmldom.getFirstChild(xmldom.item( chilNodes, 4 )));
54 --插入数据
55 INSERT INTO PEOPLE VALUES (pid,name,address,tel,fax,email);
56 COMMIT;
57 END LOOP;
58 -- 释放文档对象
59 xmldom.freeDocument(doc);
60 EXCEPTION
61 WHEN OTHERS THEN
62 DBMS_output.PUT_LINE(SQLERRM);
63 END addPerson;
存储过程截图
1 <?xml version="1.0"?>
2 <PEOPLE>
3 <PERSON PERSONID="E01">
4 <NAME>Tony Blair</NAME>
5 <ADDRESS>10 Downing Street, London, UK</ADDRESS>
6 <TEL>(061) 98765</TEL>
7 <FAX>(061) 98768</FAX>
8 <EMAIL>blair@everywhere.com</EMAIL>
9 </PERSON>
10 <PERSON PERSONID="E02">
11 <NAME>Bill Clinton</NAME>
12 <ADDRESS>White House, USA</ADDRESS>
13 <TEL>(001) 6400 98765</TEL>
14 <FAX>(001) 6400 98769</FAX>
15 <EMAIL>bill@everywhere.com</EMAIL>
16 </PERSON>
17 <PERSON PERSONID="E03">
18 <NAME>Tom Cruise</NAME>
19 <ADDRESS>57 Jumbo Street, New York, USA</ADDRESS>
20 <TEL>(001) 4500 67859</TEL>
21 <FAX>(001) 4500 67895</FAX>
22 <EMAIL>cruise@everywhere.com</EMAIL>
23 </PERSON>
24 <PERSON PERSONID="E04">
25 <NAME>Linda Goodman</NAME>
26 <ADDRESS>78 Crax Lane, London, UK</ADDRESS>
27 <TEL>(061) 54 56789</TEL>
28 <FAX>(061) 54 56772</FAX>
29 <EMAIL>linda@everywhere.com</EMAIL>
30 </PERSON>
31 </PEOPLE>
我以scott用户为例,新建表:
1 CREATE TABLE PEOPLE
2 (
3 PERSONID VARCHAR2(4) PRIMARY KEY,
4 NAME VARCHAR2(50),
5 ADDRESS VARCHAR2(200),
6 TEL VARCHAR2(20),
7 FAX VARCHAR2(20),
8 EMAIL VARCHAR2(100)
9 );
假设表里面已经有数据,如果想从XML插入数据请看【原创】编写Oracle存储过程解析XML,并把数据持久化
以下是把查询结果生成XML文件的存储过程代码:
1 /**
2 *sqlStr 附加的查询条件 如:where PERSONID = 'E01',查询所有输入''
3 *file_path 文件保存路径 如:D:\OracleTest\outpeople.xml
4 **/
5 CREATE OR REPLACE PROCEDURE OUTPUTPEOPLE(sqlStr VARCHAR2,file_path VARCHAR2)
6 AS
7 personRow PEOPLE%ROWTYPE; --获取游标的行变量
8 TYPE person_cur IS REF CURSOR; --自定义REF游标
9 cur person_cur;
10 tempSql varchar2(500) := 'SELECT * FROM PEOPLE '; --初始的查询语句
11 doc xmlDom.DOMDocument := xmldom.newDOMDocument; -- 创建文档对象
12 main_node xmlDom.DOMNode := xmldom.makeNode(doc); -- 获得文档节点
13 root_elmt xmlDom.DOMElement:= xmldom.createElement(doc, 'PEOPLE'); -- 创建根元素
14 --==================================================
15 --以下定义元素
16 person_elmt xmlDom.DOMElement; --定义PERSON元素
17 name_elmt xmlDom.DOMElement; --定义NAME元素
18 address_elmt xmlDom.DOMElement; --定义ADDRESS元素
19 tel_elmt xmlDom.DOMElement; --定义TEL元素
20 email_elmt xmlDom.DOMElement; --定义EMAIL元素
21 --==================================================
22 --以下定义节点
23 root_node xmlDom.DOMNode; --定义PEOPLE节点
24 person_node xmlDom.DOMNode; --定义PERSON节点
25 name_node xmlDom.DOMNode; --定义NAME节点
26 address_node xmlDom.DOMNode; --定义ADDRESS节点
27 tel_node xmlDom.DOMNode; --定义TEL节点
28 email_node xmlDom.DOMNode; --定义EMAIL节点
29 temp_node xmlDom.DOMNode;
30 BEGIN
31 -- 向文档节点加入根节点:<PEOPLE></PEOPLE>
32 root_node := xmldom.appendChild(main_node, xmldom.makeNode(root_elmt));
33 --附加查询条件
34 tempSql := tempSql||sqlStr;
35 --打开游标
36 OPEN cur FOR tempSql;
37 --遍历游标
38 LOOP
39 FETCH cur INTO personRow;
40 EXIT WHEN cur%NOTFOUND;
41 --===========================================================================--
42 person_elmt := xmldom.createElement(doc, 'PERSON'); --创建PERSON元素
43 -- 向PEOPLE节点加入PERSON节点<PERSON></PERSON>
44 person_node := xmldom.appendChild(root_node, xmldom.makeNode(person_elmt));
45 --===========================================================================--
46 --向PERSON节点加入属性PERSONID
47 xmlDom.SETATTRIBUTE( person_elmt, 'PERSONID', personRow.personId );
48 --===========================================================================--
49 name_elmt := xmldom.createElement(doc, 'NAME'); --创建NAME元素
50 --向PERSON节点加入子节点NAME
51 name_node := xmldom.appendChild(person_node,xmlDom.makeNode(name_elmt));
52 --向NAME节点加入文本
53 temp_node := xmldom.appendChild(name_node , xmlDom.makeNode(xmldom.createTextNode(doc,personRow.name)));
54 --===========================================================================--
55 address_elmt := xmldom.createElement(doc, 'ADDRESS'); --创建ADDRESS元素
56 --向PERSON节点加入子节点ADDRESS
57 address_node := xmldom.appendChild(person_node,xmlDom.makeNode(address_elmt));
58 --向ADDRESS节点加入文本
59 temp_node := xmldom.appendChild(address_node, xmlDom.makeNode(xmldom.createTextNode(doc,personRow.address)));
60 --===========================================================================--
61 tel_elmt := xmldom.createElement(doc, 'TEL'); --创建TEL元素
62 --向TEL节点加入子节点NAME
63 tel_node := xmldom.appendChild(person_node,xmlDom.makeNode(tel_elmt));
64 --向TEL节点加入文本
65 temp_node := xmldom.appendChild(tel_node, xmlDom.makeNode(xmldom.createTextNode(doc,personRow.tel)));
66 --===========================================================================--
67 email_elmt := xmldom.createElement(doc, 'EMAIL'); --创建EMAIL元素
68 --向PERSON节点加入子节点EMAIL
69 email_node := xmldom.appendChild(person_node,xmlDom.makeNode(email_elmt));
70 --向EMAIL节点加入文本
71 temp_node := xmldom.appendChild(email_node, xmlDom.makeNode(xmldom.createTextNode(doc,personRow.email)));
72 --===========================================================================--
73 END LOOP;
74 CLOSE cur;
75 --写入硬盘
76 xmlDom.writeToFile(doc,file_path,'GBK');
77 EXCEPTION
78 WHEN OTHERS THEN
79 DBMS_output.PUT_LINE(SQLERRM);
80 END OUTPUTPEOPLE;
Jam Chan 2008-03-19 21:48 发表评论【原创】编写Oracle存储过程解析XML,并把数据持久化2008年3月19日 21:40需要解析的xml文件:people.xml
1 <?xml version="1.0"?>
2 <PEOPLE>
3 <PERSON PERSONID="E01">
4 <NAME>Tony Blair</NAME>
5 <ADDRESS>10 Downing Street, London, UK</ADDRESS>
6 <TEL>(061) 98765</TEL>
7 <FAX>(061) 98768</FAX>
8 <EMAIL>blair@everywhere.com</EMAIL>
9 </PERSON>
10 <PERSON PERSONID="E02">
11 <NAME>Bill Clinton</NAME>
12 <ADDRESS>White House, USA</ADDRESS>
13 <TEL>(001) 6400 98765</TEL>
14 <FAX>(001) 6400 98769</FAX>
15 <EMAIL>bill@everywhere.com</EMAIL>
16 </PERSON>
17 <PERSON PERSONID="E03">
18 <NAME>Tom Cruise</NAME>
19 <ADDRESS>57 Jumbo Street, New York, USA</ADDRESS>
20 <TEL>(001) 4500 67859</TEL>
21 <FAX>(001) 4500 67895</FAX>
22 <EMAIL>cruise@everywhere.com</EMAIL>
23 </PERSON>
24 <PERSON PERSONID="E04">
25 <NAME>Linda Goodman</NAME>
26 <ADDRESS>78 Crax Lane, London, UK</ADDRESS>
27 <TEL>(061) 54 56789</TEL>
28 <FAX>(061) 54 56772</FAX>
29 <EMAIL>linda@everywhere.com</EMAIL>
30 </PERSON>
31 </PEOPLE>
我以scott用户为例,新建表:
1 CREATE TABLE PEOPLE
2 (
3 PERSONID VARCHAR2(4) PRIMARY KEY,
4 NAME VARCHAR2(50),
5 ADDRESS VARCHAR2(200),
6 TEL VARCHAR2(20),
7 FAX VARCHAR2(20),
8 EMAIL VARCHAR2(100)
9 );
解析并持久化的存储过程代码:
1 /**
2 *file_path 需要解析的XML文件路径 如:D:\OracleTest\people.xml
3 *log_path 保存日志的文件的路径 如: D:\OracleTest\xmllog.txt
4 **/
5
6 CREATE OR REPLACE PROCEDURE addPerson(file_path VARCHAR2,log_path VARCHAR2)
7 AS
8 --//XML解析器
9 xmlPar XMLPARSER.parser := XMLPARSER.NEWPARSER;
10 --//DOM文档对象
11 doc xmldom.DOMDocument;
12 len integer;
13 personNodes xmldom.DOMNodeList;
14 chilNodes xmldom.DOMNodeList;
15 tempNode xmldom.DOMNode;
16 tempArrMap xmldom.DOMNamedNodeMap;
17 --================================
18 --以下变量用于获取XML节点的值
19 pid varchar2(4);
20 name varchar2(50);
21 address varchar2(200);
22 tel varchar2(20);
23 fax varchar2(20);
24 email varchar(100);
25 tmp integer;
26 --================================
27 BEGIN
28 xmlPar := xmlparser.newParser;
29 xmlparser.setErrorLog( xmlPar, log_path);
30 xmlparser.parse(xmlPar, file_path);
31 doc := xmlparser.getDocument( xmlPar );
32 -- 释放解析器实例
33 xmlparser.freeParser(xmlPar);
34 -- 获取所有PERSON元素
35 personNodes := xmldom.getElementsByTagName( doc, 'PERSON' );
36 len := xmldom.getLength( personNodes );
37 --遍历所有PERSON元素
38 FOR i in 0..len-1
39 LOOP
40 --获取第i个PERSON
41 tempNode := xmldom.item( personNodes, i );
42 --所有属性
43 tempArrMap := xmldom.getAttributes(tempNode);
44 --获取PERSONID的值
45 pid := xmldom.getNodeValue(xmldom.getNamedItem(tempArrMap,'PERSONID'));
46 --获取子元素的值
47 chilNodes := xmldom.getChildNodes(tempNode);
48 tmp := xmldom.GETLENGTH( chilNodes );
49 name := xmldom.getNodeValue(xmldom.getFirstChild(xmldom.item( chilNodes, 0 )));
50 address := xmldom.getNodeValue(xmldom.getFirstChild(xmldom.item( chilNodes, 1 )));
51 tel := xmldom.getNodeValue(xmldom.getFirstChild(xmldom.item( chilNodes, 2 )));
52 fax := xmldom.getNodeValue(xmldom.getFirstChild(xmldom.item( chilNodes, 3 )));
53 email := xmldom.getNodeValue(xmldom.getFirstChild(xmldom.item( chilNodes, 4 )));
54 --插入数据
55 INSERT INTO PEOPLE VALUES (pid,name,address,tel,fax,email);
56 COMMIT;
57 END LOOP;
58 -- 释放文档对象
59 xmldom.freeDocument(doc);
60 EXCEPTION
61 WHEN OTHERS THEN
62 DBMS_output.PUT_LINE(SQLERRM);
63 END addPerson;
存储过程截图
- oracle xml处理
- oracle中处理XML
- oracle字段xml特殊字符处理
- Oracle数据库数据导出XML,Blob字段处理
- 处理xml
- XML 处理
- xml处理
- 处理 xml
- 处理XML
- XML 处理
- xml处理
- xml处理
- oracle xml
- oracle xml
- 使用XMLBeans 处理XML
- C#处理XML
- C# 处理XML文档
- 使用java处理XML
- 移植thttpd嵌入式web服务器(转)
- 开发者必备的SQL性能优化基本功
- httpservletrequest cannot be resolved to a type
- SQL Server 2008 定时作业的制定(SQL2005参考此方法)
- Chrome源代码分析之进程和线程模型(四)
- oracle xml处理
- ASP.NET MVC Action以强类型的方式接收表单数据
- zoj2016Play on words(判断有向图是否存在欧拉回路通路)
- 又回到这里
- C#中计算时间段内工作日期
- 如何安装虚拟打印机
- 用jquery取radio check box值的一个注意事项
- suse 安装amarok并支持mp3等大多数格式
- 串口调试程序的实现