2013-05-06 1 views
-1

데이터를 오프라인으로 저장해야하므로 데이터를 XML로 저장합니다. 자바 스크립트로 XML 객체를 얻는 방법을 모르겠습니다.HTML 문서에서 XML을 트래버스 할 수 있습니까?

<xml id=xmlData> 
     <data> 
      <tb1> 
       <id>1</id> 
       <name>1</name> 
      </tb1> 
      <tb1> 
       <id>2</id> 
       <name>2</name> 
      </tb1> 
     </data> 
    </xml> 
    <html id="MainForm"> 
    <head id="Head1"> 

    </head> 
    <body> 
    <script type="text/javascript"> 
    var xmlDoc; 
    // code for IE 
    if (window.ActiveXObject) 
    { 
    xmlDoc=new ActiveXObject("Microsoft.XMLDOM"); 
    } 
    // code for Mozilla, Firefox, Opera, etc. 
    else if (document.implementation.createDocument) 
    { 
    xmlDoc=document.implementation.createDocument("","",null); 
    } 
    else 
    { 
    alert('Your browser cannot handle this script'); 
    } 
    xmlDoc.async=false; 
    xmlDoc.load("");//how can i get the xml? 

    var x=xmlDoc.documentElement.childNodes; 

    for (var i=0;i<x.length;i++) 
    { 
    if (x[i].nodeType==1) 
     { 
     //Process only element (nodeType 1) nodes 
     document.write(x[i].nodeName + ": "); 
     document.write(x[i].childNodes[0].nodeValue); 
     document.write("<br />"); 
     } 
    } 
    </script> 
    </body> 
    </html> 
+0

오프라인으로 저장되지 않으며 XML도 유효하지 않습니다 ... 쿠키 또는 [localStorage] (http://www.w3schools.com/html/html5_webstorage.asp)를 사용해야합니다. – Kiruse

+0

u는 javascript 변수를 사용하여 xml을 문자열로 저장하고 필요할 때 구문 분석 할 수 있습니다. 이 변수는 localStorage에 저장 될 수 있습니다. – Sandeep

+0

xmlDoc.load ("file name")과 같이 작성하면 문서를로드 할 수 있습니다. online.using 위의 코드는 오프라인에서 데이터를 저장할 수 없습니다. 당신은 로컬 스토리지 개념과 함께 가야합니다. 쿠키를 로컬 스토리지를 비교하는 것이 최선의 선택입니다. –

답변

0

이 시도 -

데이터베이스에 내 XML이 같은 것입니다
_LocalVariable= XMLFromString(DataObject.Filter); 
        $.each($(_LocalVariable).find("Filter"), 
         function (index,filterDataItem) { 
         $filterDataItem =$(filterDataItem); 
         var tFilterType =$filterDataItem.find("FilterType").attr("class"); 
         var tOperator = $filterDataItem.find("Operator").attr("class"); 
         var tValue = $filterDataItem.find("Value").text(); 
         // Do more operations 
        }); 


//-------------------------------------------------------------------------------- 
//Parse XML from String 
//-------------------------------------------------------------------------------- 
function XMLFromString(pXMLString) { 
    if (!pXMLString) 
     pXMLString = "<FilterRule></FilterRule>"; 
    if (window.ActiveXObject) { 
     var oXML = new ActiveXObject("Microsoft.XMLDOM"); 
     oXML.loadXML(pXMLString); 
     return oXML; 
    } else { 
     return (new DOMParser()).parseFromString(pXMLString, "text/xml"); 
    } 
    } 

가 :

var txt='<xml id=xmlData><data><tb1><id>1</id> <name>1</name></tb1><tb1><id>2</id><name>2</name></tb1></data></xml>'; 

if (window.DOMParser) 
{ 
    parser=new DOMParser(); 
    xmlDoc=parser.parseFromString(txt,"text/xml"); 
} 
else // Internet Explorer 
{ 
    xmlDoc=new ActiveXObject("Microsoft.XMLDOM"); 
    xmlDoc.async=false; 
    xmlDoc.loadXML(txt); 
} 
var x=xmlDoc.documentElement.childNodes; 

for (var i=0;i<x.length;i++) 
{ 
    if (x[i].nodeType==1) 
    { 
     //Process only element (nodeType 1) nodes 
     console.log(x[i].nodeName + ": "); 
     console.log(x[i].childNodes[0].nodeValue); 
     console.log("<br />"); 
    } 
} 

여기

내가 그것을 읽고 뭘 오전입니다 피들 : http://jsfiddle.net/hB5E9/

+0

답변을 주셔서 감사합니다 ~~~ 나는 시도 할 것입니다 –

0

문서에서 로컬 변수를 사용합니다. XML을 객체의 문자열 속성으로 가져올 수 있다면 유용 할 것입니다. -

제 응용 프로그램에서 다소 비슷한 용도로 사용됩니다. 서비스 호출을 통해 SQL Azure DB에서 "XML"열을 읽었고이 XML 데이터를 서비스 반환 개체의 "문자열"속성으로 가져옵니다.

<FilterRule> 
    <Filter id="1"> 
    <FilterType id="AB11">Ranking</FilterType> 
    <Operator id="1">Equal To</Operator> 
    <Value>1</Value> 
    </Filter> 
    <Filter id="2"> 
    <FilterType id="AB22">Segment</FilterType> 
    <Operator id="1">Equal To</Operator> 
    <Value>2</Value> 
    </Filter> 
    <Logic>Or</Logic> 
</FilterRule> 
관련 문제