用实例说明如何用JavaScript生成XML

文中尽量用上所有的操作和属性,以作总结:

<script language="javascript"> <!-- var doc = new ActiveXObject("Msxml2.DOMDocument"); //ie5.5+,CreateObject("Microsoft.XMLDOM") //加载文档 //doc.load("b.xml"); //创建文件头 var p = doc.createProcessingInstruction ("xml","version=’’1.0’’ encoding=’’gb2312’’"); //添加文件头 doc.appendChild(p); //用于直接加载时获得根接点 //var root = doc.documentElement; //两种方式创建根接点 // var root = doc.createElement("students"); var root = doc.createNode(1,"students",""); //创建子接点 var n = doc.createNode(1,"ttyp",""); //指定子接点文本 //n.text = " this is a test"; //创建孙接点 var o = doc.createElement("sex"); o.text = "男"; //指定其文本 //创建属性 var r = doc.createAttribute("id"); r.value="test"; //添加属性 n.setAttributeNode(r); //创建第二个属性 var r1 = doc.createAttribute("class"); r1.value="tt"; //添加属性 n.setAttributeNode(r1); //删除第二个属性 n.removeAttribute("class"); //添加孙接点 n.appendChild(o); //添加文本接点 n.appendChild(doc.createTextNode ("this is a text node.")); //添加注释 n.appendChild(doc.createComment ("this is a comment/n")); //添加子接点 root.appendChild(n); //复制接点 var m = n.cloneNode(true); root.appendChild(m); //删除接点 root.removeChild(root.childNodes(0)); //创建数据段 var c = doc.createCDATASection ("this is a cdata"); c.text = "hi,cdata"; //添加数据段 root.appendChild(c); //添加根接点 doc.appendChild(root); //查找接点 var a = doc.getElementsByTagName("ttyp"); //var a = doc.selectNodes("//ttyp"); //显示改接点的属性 for(var i= 0;i<a.length;i++) { alert(a[i].xml); for(var j=0;j<a[i].attributes.length;j++) { alert(a[i].attributes[j].name); } } //XML保存(需要在服务端,客户端用FSO) //doc.save(); //查看根接点XML if(n) { alert(n.ownerDocument.xml); } //--> </script>
  • 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、付费专栏及课程。

余额充值