Skip to content

Commit 5dda01c

Browse files
committed
initial
1 parent b1b91cb commit 5dda01c

File tree

8 files changed

+10683
-0
lines changed

8 files changed

+10683
-0
lines changed
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
/**
2+
* Created by Administrator on 2017/10/13.
3+
*/
4+
function getRealPath() {
5+
//获取网页当前网址
6+
var currentPath = window.document.location.href;
7+
//获取主机目录之后的位置
8+
var pathName = window.document.location.pathname;
9+
10+
//获取带"/"的项目名
11+
var index = currentPath.indexOf(pathName);
12+
var projectName = pathName.substring(0, pathName.substring(1).indexOf("/") + 1)
13+
//获取主机名
14+
var host = currentPath.substring(0, index);
15+
16+
var port = window.document.location.port;
17+
18+
return "currentPath=" + currentPath + " "
19+
+ "pathName=" + pathName + " "
20+
+ "projectName=" + projectName + " "
21+
+ "host=" + host + " "
22+
+ "port=" + port;
23+
}
24+
25+
function getRealPath2() {
26+
//获取网页当前路径
27+
var currentPath = window.location.href;
28+
//获取端口号之后的路径,带"/"
29+
var pathName = window.location.pathname;
30+
//获取带"/"的项目名
31+
var index = currentPath.indexOf(pathName);
32+
var projectName = pathName.substr(0, pathName.substring(1).indexOf("/") + 1);
33+
//获取主机名
34+
var host = window.location.host;
35+
//获取端口号
36+
var port = window.location.port;
37+
38+
return "currentPath=" + currentPath + " "
39+
+ "pathName=" + pathName + " "
40+
+ "projectName=" + projectName + " "
41+
+ "host=" + host + " "
42+
+ "port=" + port;
43+
}

src/main/webapp/WEB-INF/js/ReadXml.js

Lines changed: 200 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,200 @@
1+
/**
2+
* Created by Administrator on 2017/10/13.
3+
*/
4+
/**
5+
* 实现js解析xml文件的功能,包含2种方式:
6+
* 1:读取本地xml文件或xml格式字符串,解析xml内容
7+
* 2:ajax获取服务器xml文件,采用文件或字符串的方式解析xml
8+
*
9+
* 测试示例数据:
10+
* <?xml version="1.0" encoding="utf-8" ?>
11+
* <DongFang>
12+
* <Company>
13+
* <cNname>1</cNname>
14+
* <cIP>1</cIP>
15+
* </Company>
16+
* <Company>
17+
* <cNname>2</cNname>
18+
* <cIP>2</cIP>
19+
* </Company>
20+
* <Company>
21+
* <cNname>3</cNname>
22+
* <cIP>3</cIP>
23+
* </Company>
24+
* <Company>
25+
* <cNname>4</cNname>
26+
* <cIP>4</cIP>
27+
* </Company>
28+
* <Company>
29+
* <cNname>5</cNname>
30+
* <cIP>5</cIP>
31+
* </Company>
32+
* <Company>
33+
* <cNname>6</cNname>
34+
* <cIP>6</cIP>
35+
* </Company>
36+
* </DongFang>
37+
*
38+
* @param xmlFilePath
39+
* @returns {*}
40+
*/
41+
//xmlFilePath xml文件路径
42+
function loadXmlFile(xmlFilePath) {
43+
var xmlDoc=null;
44+
//判断浏览器的类型
45+
if (!!window.ActiveXObject || "ActiveXObject" in window) {//支持IE浏览器
46+
var xmlDomVersions = ['MSXML.2.DOMDocument.6.0','MSXML.2.DOMDocument.3.0','Microsoft.XMLDOM'];
47+
for(var i=0;i<xmlDomVersions.length;i++){
48+
try{
49+
xmlDoc = new ActiveXObject(xmlDomVersions[i]);
50+
break;
51+
}catch(e){
52+
}
53+
}
54+
}
55+
else if (document.implementation && document.implementation.createDocument) {//Firefox, Mozilla, Opera, etc
56+
try{
57+
/* document.implementation.createDocument('','',null); 方法的三个参数说明
58+
* 第一个参数是包含文档所使用的命名空间URI的字符串;
59+
* 第二个参数是包含文档根元素名称的字符串;
60+
* 第三个参数是要创建的文档类型(也称为doctype)
61+
*/
62+
xmlDoc = document.implementation.createDocument('','',null);
63+
}catch(e){
64+
}
65+
}
66+
else{
67+
return null;
68+
}
69+
70+
if(xmlDoc!=null){
71+
try{
72+
xmlDoc.async = false;
73+
xmlDoc.load(xmlFilePath);//chrome没有load方法
74+
}catch(e){
75+
//针对Chrome,不过只能通过http访问,通过file协议访问会报错
76+
var xmlhttp = new window.XMLHttpRequest();
77+
xmlhttp.open("GET", xmlFilePath, false);
78+
xmlhttp.send(null);
79+
if(xmlhttp.readyState == 4){
80+
xmlDoc = xmlhttp.responseXML.documentElement;
81+
}
82+
}
83+
}
84+
85+
return xmlDoc;
86+
}
87+
//读取xml 字符串
88+
function loadXmlString(xmlString) {
89+
var xmlDoc = null;
90+
//判断浏览器的类型
91+
//支持IE浏览器
92+
if (!!window.ActiveXObject || "ActiveXObject" in window) { //window.DOMParser 判断是否是非ie浏览器
93+
var xmlDomVersions = ['MSXML.2.DOMDocument.6.0', 'MSXML.2.DOMDocument.3.0', 'Microsoft.XMLDOM'];
94+
for (var i = 0; i < xmlDomVersions.length; i++) {
95+
try {
96+
xmlDoc = new ActiveXObject(xmlDomVersions[i]);
97+
xmlDoc.async = false;
98+
xmlDoc.loadXML(xmlString); //loadXML方法载入xml字符串
99+
break;
100+
} catch (e) {
101+
}
102+
}
103+
}
104+
else if (window.DOMParser && document.implementation && document.implementation.createDocument) {//支持Mozilla浏览器
105+
try {
106+
/* DOMParser 对象解析 XML 文本并返回一个 XML Document 对象。
107+
* 要使用 DOMParser,使用不带参数的构造函数来实例化它,然后调用其 parseFromString() 方法
108+
* parseFromString(text, contentType) 参数text:要解析的 XML 标记 参数contentType文本的内容类型
109+
* 可能是 "text/xml" 、"application/xml" 或 "application/xhtml+xml" 中的一个。注意,不支持 "text/html"。
110+
*/
111+
domParser = new DOMParser();
112+
xmlDoc = domParser.parseFromString(xmlString, 'text/xml');
113+
} catch (e) {
114+
}
115+
}
116+
else {
117+
return null;
118+
}
119+
120+
return xmlDoc;
121+
}
122+
123+
function getLocalXmlPath() {
124+
var host = window.location.host;
125+
var path = window.location.pathname;
126+
var webinfIndex = path.lastIndexOf("WEB-INF");
127+
var xmlPath = path.substr(1, webinfIndex - 1).concat("WEB-INF/resource/testReadXml.xml");
128+
129+
return xmlPath = window.location.protocol + "//" + host + "/" + xmlPath;
130+
}
131+
132+
//读取本地xml文件,根据ajax设置的返回数据类型不同,以文件或字符串的形式解析返回的xml
133+
function readXMLFile() {
134+
var xmlPath = getLocalXmlPath();
135+
//读取xmlfile
136+
var xmlDoc = loadXmlFile(xmlPath);
137+
var elements = xmlDoc.getElementsByTagName("Company");
138+
for (var i = 0; i < elements.length; i++) {
139+
var name = elements[i].getElementsByTagName("cNname")[0].firstChild.nodeValue;
140+
var ip = elements[i].getElementsByTagName("cIP")[0].firstChild.nodeValue;
141+
142+
alert("name=" + name + " ,ip=" + ip);
143+
144+
break;
145+
}
146+
}
147+
function readXMLString() {
148+
//读取xml string
149+
var xmlstring = '<?xml version="1.0" encoding="utf-8" ?><DongFang><Company><cNname>1</cNname><cIP>1</cIP></Company><Company><cNname>2</cNname><cIP>2</cIP></Company><Company><cNname>3</cNname><cIP>3</cIP></Company><Company><cNname>4</cNname><cIP>4</cIP></Company><Company><cNname>5</cNname><cIP>5</cIP></Company><Company><cNname>6</cNname><cIP>6</cIP></Company></DongFang>';
150+
var xmlstringDoc = loadXmlString(xmlstring);
151+
var elements_2 = xmlstringDoc.getElementsByTagName("Company");
152+
for (var i = 0; i < elements_2.length; i++) {
153+
var name = elements_2[i].getElementsByTagName("cNname")[0].firstChild.nodeValue;
154+
var ip = elements_2[i].getElementsByTagName("cIP")[0].firstChild.nodeValue;
155+
156+
alert("name=" + name + " ,ip=" + ip);
157+
158+
break;
159+
}
160+
}
161+
162+
//ajax获取取本地xml文件,根据ajax设置的返回数据类型不同,以文件或字符串的形式解析返回的xml
163+
function ajaxLoadXmlFile() {
164+
var xmlPath = getLocalXmlPath();
165+
$.ajax({
166+
url: "../resource/testReadXml.xml",
167+
dataType: "xml",
168+
type: "get",
169+
success: function (responseData) {
170+
171+
$(responseData).find("Company").each(function(i){
172+
var name = $(this).children("cNname").text();
173+
var ip = $(this).children("cIP").text();
174+
alert("name=" + name + " ,ip=" + ip);
175+
return false;
176+
});
177+
}
178+
});
179+
}
180+
//ajax获取取本地xml文件,根据ajax设置的返回数据类型不同,以文件或字符串的形式解析返回的xml
181+
function ajaxLoadXmlString() {
182+
var xmlPath = getLocalXmlPath();
183+
$.ajax({
184+
url: xmlPath,
185+
dataType:"text",
186+
type:"get",
187+
success: function (responseData) {
188+
var xmlDoc = loadXmlString(responseData);
189+
var elements_2 = xmlDoc.getElementsByTagName("Company");
190+
for (var i = 0; i < elements_2.length; i++) {
191+
var name = elements_2[i].getElementsByTagName("cNname")[0].firstChild.nodeValue;
192+
var ip = elements_2[i].getElementsByTagName("cIP")[0].firstChild.nodeValue;
193+
194+
alert("name=" + name + " ,ip=" + ip);
195+
196+
break;
197+
}
198+
}
199+
});
200+
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
<?xml version="1.0" encoding="utf-8" ?>
2+
<DongFang>
3+
<Company>
4+
<cNname>1</cNname>
5+
<cIP>1</cIP>
6+
</Company>
7+
<Company>
8+
<cNname>2</cNname>
9+
<cIP>2</cIP>
10+
</Company>
11+
<Company>
12+
<cNname>3</cNname>
13+
<cIP>3</cIP>
14+
</Company>
15+
<Company>
16+
<cNname>4</cNname>
17+
<cIP>4</cIP>
18+
</Company>
19+
<Company>
20+
<cNname>5</cNname>
21+
<cIP>5</cIP>
22+
</Company>
23+
<Company>
24+
<cNname>6</cNname>
25+
<cIP>6</cIP>
26+
</Company>
27+
</DongFang>
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
<!DOCTYPE html>
2+
<html lang="en">
3+
<head>
4+
<meta charset="UTF-8">
5+
<title>Get Real Path</title>
6+
7+
<script src="../../static/js/jquery-1.11.3/jquery.min.js"></script>
8+
<script src="../js/GetWebPath.js"></script>
9+
<script>
10+
function getPath1() {
11+
var paths = getRealPath();
12+
// paths = paths.replace(new RegExp(" ", "gm"), "<br>");
13+
var html = "";
14+
paths.split(" ").map(function (value, index) {
15+
html += value + "<br>";
16+
}, html);
17+
18+
$("#methord1").html(html);
19+
}
20+
function getPath2() {
21+
var paths = getRealPath2();
22+
paths = paths.replace(new RegExp(" ", "gm"), "<br>");
23+
$("#methord2").html(paths);
24+
}
25+
</script>
26+
</head>
27+
<body>
28+
<button id="getPath1" onclick="getPath1()">Get Path - methord_1</button>
29+
<div id="methord1" style="height: 120px;"></div>
30+
31+
<button id="getPath2" onclick="getPath2()">Get Path - methord_2</button>
32+
<div id="methord2" style="height: 100px;"></div>
33+
</body>
34+
</html>
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
<!DOCTYPE html>
2+
<html lang="en">
3+
<head>
4+
<meta charset="UTF-8">
5+
<title>解析xml示例</title>
6+
7+
<script src="../../static/js/jquery-1.11.3/jquery.min.js"></script>
8+
<script src="../js/ReadXml.js"></script>
9+
10+
</head>
11+
<body>
12+
<button id="readLocalXmlFile" onclick="readXMLFile()">ReadLocalXmlFile</button>
13+
<button id="readXmlString" onclick="readXMLString()">ReadXmlString</button>
14+
<button id="jqueryReadXmlFile" onclick="ajaxLoadXmlFile()">JQueryReadXmlFile</button>
15+
<button id="jqueryReadXmlString" onclick="ajaxLoadXmlString()">JQureyReadLocalXmlString</button>
16+
</body>
17+
</html>

0 commit comments

Comments
 (0)