최근 XML이 프로젝트에 사용되었습니다. 요구 사항은 사용자가 제품을 설치하면 먼저 일련의 데이터를 XML 파일에 저장하고 마지막 단계가 실행될 때 데이터베이스에 작성해야합니다. 이것은 데이터베이스에 대한 액세스를 최소화하므로 각 브라우저의 호환성에 대해 걱정해야합니다 (슬픈 ...).
본문을 입력하고 XML 파일입니다 (CreateInstal.xml).
<? xml version = "1.0"alcoding = "utf-8"?> <info> <icrem "description ="level "name ="1 "f_chines ="number "t_chines =" "exly ="id "value ="1 "> number </id> <levelName description ="level "name =" "f_chines ="level "> level" "level level ="level "> 이름 </levelname> <exption description = "level"name = ""f_chines = "level-description"an f_chines = "영어 이름"t_chines = "영어 이름"영어 = "영어"value = "levelone"> 영어 이름 </earlogne "6 description ="Award "Name ="106 "f_chines ="Award "t_chines ="Six "English ="worda-of-t "value ="a "/> <수상 Eleven description ="name = "111. 영어 = "11"value = "0.05"/> <상 Eleven Description = "Award"Name = "112"F_Chines = "Award Eleven"Award eleven "Award"Award "Name ="112 "F_Chines ="Award Eleven "T_CHINES ="Award "Name ="113 "F_CHINES ="AWERVEN "T_CHINES ="3333 "AWERSEVEN"T_CHINES = "3333"AWERSEVEN "T_CHINES ="3333 "AWERSE Description = "Award"Name = "101"F_chines = "Award One"T_CHINES = "ONE"ENGLING = "AWORD-OF-A"value = "0.90"/> </item> </info>
IE 및 FF와 호환 되려면 다음 기능 (loadxml.js)을 작성하십시오.
var is_ie = false; // if (wind document.implementation.createdocument ( "", "", null);} catch (e) {alert (e.message);}} try {// xmldoc.async = false; xmldoc.load (xmlurl); return xmldoc;} catch (e)의 변경 비동기로드 변경 {alert (e.message);} returnNull;} // XML 문서 형식의 문자열을 XML 문서 function createxml (xmlText) {if (! xmlText) {returnnull; var xmldocm = new ActiveBject ( "microsoft.xmldom"); xmldocm;} catch (e) {try {returnnew domparse (). parsefromString (xmltext, "text/xml");} catch (e) {returnnull;}}}} // 노드의 텍스트를 얻고 그 getxmltext (onode) {if (onode. onode.tex;} var stext = ""; for (var i = 0; i <onode.childnodes.length; i ++) {// 어린이 노드의 평온함 if (onode.childnodes [i].) += onode [i] .childnodes.nodevalue;}} return stext;} // 노드의 문자열 식별 및 그 어린이 노드 기능 getxml (onode) {if (onode.xml) {// iereturn onode.xml;} var serializer = new xmlserializer (); Serializer.serializetoString (onode);} // 지정된 노드의 텍스트를 가져옵니다 (참고 : onode.childnodes [0] .nodevalue를 사용할 수도 있습니다. 노드의 텍스트 정보를 가져 오기 위해 브라우저의 문제를 onodeonode) 함수를 고려할 필요가 없습니다. (onode.nodeType == 1) return onode.textContent;}} // 지정된 노드 함수의 속성 값을 가져옵니다 getXmlNodeAttribute (onode, attrname) {if (is_ie) {return onode.getAttribute (attrname); if (onode.nodeType == 1 | onode. onode.attributes [attrname] .Value; return "undefined";}}}OK IE와 FF는 더 이상 문제가되지 않으며 특정 작업 방법은 다음과 같습니다.
var docum = loadxml ( "createInstal.xml"); // XML 파일 var root = document.DocumentElement; // root 노드 var var nodelist = root.getElementsByTagName ( "Items"); for (<nodelist [0] .childnodes.length; i ++) {var attr = var i = 0; getxmlnodeattribute (nodelist [0] .childnodes [i], "description"); //이 노드의 설명 속성을 get (attr! = "undefined") // 목적은 ff browser {alert (attr)와 호환됩니다. }}이렇게하면 IE와 FF 간의 호환성이 보장됩니다 (현재 Google Chrome 은이 방법을 사용할 수 없으며 여전히 수정되어야합니다).
또한 Firefox에서 XML을 얻는 두 가지 방법에 대해 이야기 해 봅시다.
JS는 Firefox에서 XML 파일을 읽습니다
나는 온라인으로 온라인으로 "Firefox에서 XML 파일을 읽는 JS"방법을 검색했으며 많은 사람들이 요청을 받았으며 아무도 대답하지 않았습니다. 나는 많은 프로그래머들이 Firefox에 대해 불평하는 것을 보았습니다. "배기 프로그래머를 제외하고는 이점이 없습니다." 나는 요점으로 돌아왔다. Firefox는 IE에서 ActiveXobject 객체를 지원하지 않습니다. XML dom을 얻으려면 다음과 같은 두 가지 방법이 있습니다.
1. document.implementation.createdocument ( "", "", null);
2. window.xmlhttprequest
예 : 1. var dom = document.implementation.createdocument ( "", "", null);
dom.async = false;
dom.load ( "test.xml"); // dom은 XML 객체입니다.
2. var oxmlhttp = new xmlhttprequest ();
oxmlhttp.open ( "get", "test.xml", false);
oxmlhttp.send (null);
//oxmlhttp.responsexml은 XML 객체입니다.
알아채다:
1. Firefox는 XML 문서를 구문 분석합니다
2. Firefox 브라우저와 나는 TextContent를 사용하여 XML의 다른 노드 값을 구문 분석합니다.
3. 그리고 일부 계층 적 어린이 노드 (즉, 어린이를 사용할 때) 전후에 "/n"라인 브레이크를 추가합니다. (Firebug로 디버깅 할 때 왜 그런지 모르겠으므로 작성한 코드를 테스트하는 것이 가장 좋습니다. 환경을 변경하는 것이 잘못된 경우 첫 번째 노드는 "/n"이고 두 번째 노드는 실제 노드입니다.
첫 번째 노드. 세 번째 노드는 "/n"이고 네 번째 노드는 실제 두 번째 노드입니다.
위의 Firefox 상황에 따르면, 여기에 Childnodes를 사용하지 않고 호환성 을 달성하기위한 예가 있습니다.
위의 것은 JS 운영 XML 파일의 구현 방법으로, IE 및 Firefox의 모든 내용과 호환됩니다. 모두가 wulin.com을 더 지원하기를 바랍니다 ~