【问题标题】:Can JQuery or JavaScript be used to manipulate XML/DOM without a browser?可以在没有浏览器的情况下使用 JQuery 或 JavaScript 来操作 XML/DOM 吗?
【发布时间】:2012-03-25 01:49:47
【问题描述】:

我开始研究一些网络技术来整合内容、标记、布局、样式和行为以供个人使用(目前不是网络开发),并对 JQuery 选择器和函数的强大功能感到惊讶。

我听说有一些方法可以在浏览器“外部”使用 javascript,进行一些 DOM 选择、操作等。我想知道 JQuery 是否也可以这样使用。

所以,我想做的是:

  • 使用某种编程/脚本语言(我使用 Python),访问 XML 文件并解析其 DOM;
  • 使用 javascript/jquery 选择器和函数以编程方式操作和修改 DOM;
  • 将结果保存到(可能是另一个)XML 文件中。

【问题讨论】:

  • 我为此使用HTA,因为它也为您提供了一个文件系统对象。然而,HTA 只是一个盒子里的 IE
  • jQuery 依赖于仅存在于网络浏览器中的 DOM 函数...
  • @hippietrail jQuery 在执行 DOM 查询、DOM 遍历和 DOM 操作时使用浏览器的 DOM 方法。只需查看 jQuery 的源代码。我不知道你的评论是什么意思...
  • @ŠimeVidas:对不起,我的“不再”指的是依赖 DOM 函数的 jQuery。它指的是仅存在于 Web 浏览器中的 DOM 功能。我一直在阅读越来越多的工具,其中包括他们自己的 DOM 实现。一个似乎是jsdom。我认为node.js 也提供了一个 DOM。
  • @hippietrail 啊,我明白了。是的,我原来的评论是不正确的。 DOM 实现仅限于浏览器。

标签: javascript jquery xml file-manipulation


【解决方案1】:

如果你喜欢 jQuery 语法,请查看pyQuery

from pyquery import PyQuery

_ = PyQuery('<body><p></p></body>')
_("p").text("hello").css({'color': 'red'})
print _.html()


>>> <p style="color: red">hello</p>

【讨论】:

    【解决方案2】:

    是的,您只需要一个 Javascript 运行时。

    查看node.js

    【讨论】:

      【解决方案3】:

      您正在寻找的是所谓的“无头”浏览器。

      这篇 SO 帖子可能会有所帮助:

      Real headless browser

      【讨论】:

        【解决方案4】:

        基本上,您需要一个 javascript 解释器(例如:V8)+ 用于您选择的语言的包装器(例如:pyv8)。然后你可以这样做(从 pyv8 页面):

        import PyV8
        ctxt = PyV8.JSContext()
        ctxt.enter()
        ctxt.eval("1+2") # 1+2 is a javascript code
        

        【讨论】:

        • 这看起来很有希望。你能展示一些 XML 文件操作的最小代码吗?
        猜你喜欢
        • 2011-06-22
        • 1970-01-01
        • 2018-11-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-03-20
        • 1970-01-01
        • 2011-07-03
        相关资源
        最近更新 更多