现在的位置: 首页 > 综合 > 正文

I need to save the data offline, so I save the data as XML. I don’t know how to get the XML object with JavaScript.

2013年01月13日 ⁄ 综合 ⁄ 共 2811字 ⁄ 字号 评论关闭

I need to save the data offline, so I save the data as XML. I don't know how to get the XML object with JavaScript.

<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>

 answer

try this:

ar 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 />");
    } 
}

answer 2:

use a local variable in the document to do this. If you can get the XML as a string property of an object then this might be useful -

I have a somewhat similar usage in my application. I read an "XML" column from the SQL Azure DB through a service call and I get this XML data as a "string" property of the service return object.

Here is what I am doing to read that :

_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");
    }
  }

 Where my XML in the database is something like this -

<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>

 

抱歉!评论已关闭.