【问题标题】:Libraries to write xml with JavaScript使用 JavaScript 编写 xml 的库
【发布时间】:2011-05-03 04:42:49
【问题描述】:

我正在使用 JavaScript (node.js) 进行一些服务器端编码,我想编写有效的 xml。

我找到了两个库,但我确信还有更多/更好的!?

要求:开源(商业用途)

如果项目快速、小巧且易于使用(按此顺序),那就太好了。而且我想有一个更低级别的访问 ala

doc.addElement('xy').addAttr('name', 'bob');

【问题讨论】:

  • 选项 1:document.write('') 选项 2:自己写一个库,你不会相信它是多么容易。您所需要的只是一个能够正确转义 HTML 实体(尖括号等)的函数。只是不要使用名称空间,它们会使库和整个事情变得更加复杂。这样做的好处是(1)你会确切地知道图书馆在做什么,(2)你将拥有最简单的图书馆,专门为你完成这项工作。
  • 但我无法想象没有一个库已经这样做了......这正是问题所在:“尖括号等”:-)
  • @Karussell:(请在开始时回复@mojuba,看起来那是SO向我发送通知的时候)。几乎所有这些库的问题在于它们所做的比您通常需要的要多得多。至于 HTML 转义,方法如下: function html(s) { return s.split("&").join("&").split("").join(">") }(抱歉,这里没有格式)
  • 实际上我的 html() 是不完整的,没有转义双引号。换句话说,您只需要转义影响标记流完整性的字符: function html(s) { return s.split('&').join('&').split('').join('>').split('"').join('"') }.
  • 嗯,我自己滚动。但是现在对于中文字符,我遇到了一个编码问题,它们在 javascript 中看起来不错,但在 xml 中却没有 :-( 顺便说一句:我没有在 mojuba 回复 ...

标签: javascript xml serverside-javascript


【解决方案1】:

我创建了如下两个函数:

function loadXMLDoc(filename){
  if (window.XMLHttpRequest){
      xhttp=new XMLHttpRequest();
  }
  else {
  xhttp=new ActiveXObject("Microsoft.XMLHTTP"); // code for IE 5-6
  }
  xhttp.open("GET",filename,false);
  xhttp.send();
  return xhttp.responseXML;
}

并且,要将 XML 写入本地文件,请调用以下函数。

function writeXML() 
    {
        var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
        var fso = new ActiveXObject("Scripting.FileSystemObject");
        var FILENAME="D:/YourXMLName/xml";
        var file = fso.CreateTextFile(FILENAME, true);
        file.WriteLine('<?xml version="1.0" encoding="utf-8"?>\n');
        file.WriteLine('<PersonInfo>\n');
        file.WriteLine('></Person>\n');
        } 
        file.WriteLine('</PersonInfo>\n');
        file.Close();
    } 

我希望这会有所帮助,或者您可以尝试Ariel Flesler's XMLWriter 在内存中创建 XML。

【讨论】:

    【解决方案2】:

    Node.js 的这个库非常稳定且易于使用:https://github.com/minchenkov/simple-xml-writer

    【讨论】:

      【解决方案3】:

      我发现 Ariel Flesler 的 XMLWriter 构造函数是从头开始(在内存中)创建 XML 的良好开端,看看这个

      http://flesler.blogspot.com/2008/03/xmlwriter-for-javascript.html

      例子

      function test(){    
         // XMLWriter will use DOMParser or Microsoft.XMLDOM
         var v = new  XMLWriter();
         v.writeStartDocument(true);
         v.writeElementString('test','Hello World');
         v.writeAttributeString('foo','bar');
         v.writeEndDocument();
         console.log( v.flush() );
      }
      

      结果

      <?xml version="1.0" encoding="ISO-8859-1" standalone="true" ?>
      <test foo="bar">Hello World</test>
      

      有几点需要注意,它不会转义字符串,而且语法会变得很丑 coyote++。您可以从作者的网站或从 https://github.com/alexandern/XMLWriter(包括独立属性的转义和错误修复)

      【讨论】:

      • 如何将输出写入文件?
      • @KamalSalem。我假设您指的是 Web 浏览器写入用户的本地磁盘,如果是这样,那是不可能的。
      • @AlexanderN 您可以使用数据 URI 方案在浏览器中生成文件
      【解决方案4】:

      我最近发布了 node-genx,它是一个名为 Genx 的小型 C 库的包装器,可在 node.js 中提供快速有效的 xml 生成。

      安装很简单:

      npm install genx
      

      我在我的博客上发布了一些 examples of using it 来生成 Atom 提要和 Sphinx xmlpipe2 流。

      【讨论】:

        【解决方案5】:

        http://github.com/ry/node/wiki/modules#parsers-xml 列出了许多用于 node.js 的 XML 库

        如果没记错的话,最受关注的是http://github.com/polotek/libxmljs,它似乎是麻省理工学院许可的。

        【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-06-02
        • 2011-06-25
        • 2015-05-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多