[JavaScript] Javascript 读取 XML String 或 XML File

这段代码是我在回复一个帖子时写的,觉得有一定的收藏价值

function  listAllStates()


var  xmlDoc;
var  xmlString  =   ' <states><state>wei</state></states> ' ;

    
//  Mozilla and Netscape browsers
     if  (document.implementation.createDocument) {
        
var  parser  =   new  DOMParser()
        xmlDoc 
=  parser.parseFromString(xmlString,  " application/xml " )
    
//  MSIE
    }  else   if  (window.ActiveXObject) {
        xmlDoc 
=   new  ActiveXObject( " Microsoft.XMLDOM " )
        xmlDoc.async
= " false "
        xmlDoc.loadXML(xmlString)
    }
   

  
var  x  =  xmlDoc.getElementsByTagName( ' state ' );

  alert (xmlDoc);
  alert (x.length);
}
 
 listAllStates();
相关链接:
http://diveintogreasemonkey.org/patterns/parse-xml.html
http://developer.taboca.com/cases/en/client-javascript-dom-parser/

Import XML from a file
http://www.quirksmode.org/dom/importxml.html
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 要将JavaScript中的XML内容转换为流文件并压缩,您可以按照以下步骤进行操作: 1. 首先,您需要将XML内容转换为字符串。您可以使用JavaScript中的`XMLSerializer`对象中的`serializeToString()`方法将XML对象转换为字符串。 2. 接下来,您需要使用JavaScript中的`Blob`对象将字符串转化为二进制数据流。使用`Blob`对象的构造函数,传入一个数组,其中包含您的XML字符串,然后指定MIME类型为`application/xml`。 3. 然后,您可以使用`JSZip`库来创建一个压缩包。通过使用`JSZip`库的构造函数,您可以创建一个新的Zip实例。 4. 将刚刚创建的`Blob`对象添加到压缩包中,使用`JSZip`库的`file()`方法。您需要指定一个文件名,并将上一步中创建的`Blob`对象作为参数传入。 5. 最后,使用`JSZip`库的`generateAsync()`方法生成压缩包,并将其保存为一个流文件。传入参数 `{type: "blob"}` 可以确保生成的数据是二进制流。 以下是示例代码实现上述步骤: ```javascript // 转换XML内容为字符串 const xmlString = new XMLSerializer().serializeToString(xmlObject); // 创建Blob对象 const blob = new Blob([xmlString], {type: "application/xml"}); // 创建JSZip实例 const zip = new JSZip(); // 将Blob对象添加到压缩包中 zip.file("xmlFile.xml", blob); // 生成压缩包并保存为流文件 zip.generateAsync({type:"blob"}) .then(function(content) { // 将压缩包保存为流文件 saveAs(content, "compressed.zip"); }); ``` 希望这些步骤对您有所帮助! ### 回答2: 在JavaScript中,你可以使用XMLHttpRequest对象将XML内容转换为文件流,并进行压缩操作。以下是一个简单的示例代码: ```javascript // 创建XMLHttpRequest对象 var xhr = new XMLHttpRequest(); // 定义要转换为文件流的XML内容 var xmlContent = "<root><name>John</name><age>30</age></root>"; // 将XML内容转换为Blob对象 var blob = new Blob([xmlContent], {type: 'text/xml'}); // 创建压缩文件流 var compressedStream = new CompressedStream(blob); // 压缩文件完成后的回调函数 compressedStream.oncompress = function(compressedBlob) { // 创建下载链接 var downloadLink = document.createElement('a'); downloadLink.href = URL.createObjectURL(compressedBlob); downloadLink.download = 'compressed.xml'; // 触发下载 downloadLink.click(); }; // 压缩文件流 compressedStream.compress(); ``` 上述代码中,我们首先创建了一个XMLHttpRequest对象,然后定义了要转换为文件流的XML内容,通过创建Blob对象将XML内容转换为文件流。接下来,我们使用了一个自定义的CompressedStream对象来进行文件流的压缩操作。在文件压缩完成后,我们通过创建一个下载链接并触发下载,用户可以下载压缩后的文件。 需要注意的是,上述代码中使用的CompressedStream是一个自定义对象,用于实现文件流的压缩功能。你可能需要根据自己的需求来实现该对象。同时,代码中的300字限制可能无法完整展示XML的转换和压缩过程,但这个代码段应该可以给你个大致的思路和操作方法。 ### 回答3: 要将Javascript中的XML内容转换为流文件并进行压缩,您可以遵循以下步骤: 1. 首先,将XML内容转换为字符串格式。可以使用`XMLSerializer`对象的`serializeToString()`方法将XML对象转换为字符串。 2. 接下来,创建一个新的Blob对象,将XML字符串作为其内容,并设置其类型为"text/xml"。使用Blob对象可以将数据转换为可操作的二进制流。 3. 然后,将Blob对象传递给FileReader实例的`readAsArrayBuffer()`方法,以读取Blob对象的内容到ArrayBuffer中。使用ArrayBuffer可以处理二进制数据。 4. 一旦读取到ArrayBuffer中,我们可以使用JSZip库来创建一个新的ZIP文件。通过循环读取ArrayBuffer的每个字节,并将其添加到ZIP文件中。 5. 最后,使用JSZip库的`generateAsync()`方法将ZIP文件转换为流文件。此方法返回一个Promise对象,我们可以使用它来获取流文件。 以下是一个示例代码: ```javascript const xmlContent = '<root><element>...</element></root>'; // 替换为您的XML内容 // 将XML内容转换为Blob对象 const xmlBlob = new Blob([xmlContent], {type: 'text/xml'}); // 读取Blob对象的内容到ArrayBuffer const fileReader = new FileReader(); fileReader.onload = function() { const arrayBuffer = this.result; // 创建一个新的ZIP文件 const zip = new JSZip(); // 将ArrayBuffer写入ZIP文件 zip.file('xmlfile.xml', arrayBuffer); // 生成ZIP文件并转换为流文件 zip.generateAsync({type: 'blob'}) .then(function(content) { // content即为压缩的流文件,可以使用它进行进一步操作 console.log(content); }); }; fileReader.readAsArrayBuffer(xmlBlob); ``` 请注意,上述代码中使用了JSZip库来创建和操作ZIP文件。您需要在项目中引入JSZip库才能使用它。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值