在浏览器中突出显示和编辑XML

时间:2010-09-13 04:45:28

标签: java javascript xml cross-browser

尝试在浏览器中为用户提供可编辑的XML页面。

例如,以下是XML的一部分。

<Employee name="John Doe" type="contract" ID="1000"> 
    <Salary>10000</Salary>  
    <Email>johndoe@johndoe.com</Email>  
</Employee>

当在浏览器(IE或FF)中向用户呈现上述内容时,用户应该能够突出显示属性或值。突出显示并按下第二个鼠标按钮时,将弹出一个菜单进行编辑。对于属性和标签,它可能类似于ID-TEST-PRESENT或ID-TEST-OPTIONAL。现在代替ID,该属性应在选中时更改为ID-TEST-PRESENT。

同样,对于值,可以显示文本框,用户可以在其中输入新值。然后,需要将此更新的XML文件发送到后端并保存。

这可行吗?如果是,那么最简单的方法是什么。

我一直在编写嵌入式应用程序。这是我在网络浏览器方面的第一次尝试。任何帮助表示赞赏。

4 个答案:

答案 0 :(得分:1)

当然可行,但这不是微不足道的。至少不适合那些不习惯使用Javascript和操作DOM的人。您必须解析XML并在每个元素上使用Javascript事件侦听器创建HTML文档。

您可以尝试使用现有组件并在必要时进行修改。我在这里找到了类似的问题:

https://stackoverflow.com/questions/378205/web-xml-editor-with-xml-syntax-highlighting

除非您正在处理通用XML文件,否则最好只阅读XML并生成标准HTML表单。最简单的方法是将所有内容都基于数据库,如果需要,将数据库导出到后端进程。这使得添加/编辑多行数据更加简单

答案 1 :(得分:1)

创建用于编辑特定XML词汇表中的信息的界面的一种方法是使用XForms。 (我认为它是迄今为止最容易和最好的,但是YMMV。)给定适当的基础设施(见下文),使用XForms来描述所涉及的内容:

  1. 使用XHTML + XForms编写表单。为希望用户能够编辑的XML部分指定编辑小部件;使XML的其他部分成为只读(或根本不显示它们)。定义您希望如何提交编辑数据。使用CSS的风格。
  2. 当用户打开表单时,XForms处理器会自动加载XML文档,并提供您在步骤1中指定的XForm中指定的编辑窗口小部件。用户进行编辑。
  3. 当用户点击提交按钮时,浏览器将数据作为XML发送回服务器,服务器上的软件执行必要的验证(这是来自开放网络的用户输入,您确实要检查它)并妥善处理。
  4. 正如您所看到的,它比使用AJAX滚动您自己更简单(至少在您设置基础结构后)。

    XForms所需的基础结构部分取决于您使用的XForms实现。

    对于XForms的基于客户端的实现(例如来自AgenceXML的XSLTForms,或来自EMC的公式),您需要(a)服务器上的软件副本(对于XSLTForms,这意味着一个XSLT样式表,一个Javascript库和一个CSS文件),(b)可能是表单本身中的适当链接(如何执行此操作因实现而异),以及(c)愿意接受PUT请求的服务器。在某些情况下,它将是(c)最难设置,但任何提供WebDAV接口的服务器都会这样做,因此SVN具有自动版本控制,Apache(单独或在Subversion之上)以及其他工具都可以使用。

    对于基于服务器的实现(例如Orbeon Forms或BetterForm),您需要安装XForms实现并在Web服务器上运行它;因为它们通常是servlet,所以你需要将它们放在servlet引擎中。一般来说,它们将附带某种形式的WebDAV服务器。

    W3C和CWI的Steven Pemberton写了一篇有用的tutorial introduction to XForms;我保留了list of pointers以及其他与XForms相关的材料,这些材料也可能会有所帮助。

答案 2 :(得分:0)

为了做到这一点,你需要做很多工作。要进行通用编辑,您需要以下

  1. 后端的XML解析器将XML文件解析为2种格式(A)转换为前端所需的HTML格式。 (B)转换为所需的后端格式。这很棘手,需要一些思考。蛮力方法很容易但效率很低。
  2. 设置与脚本的AJAX连接,该连接可以识别和识别部分XML。为此,您需要一些机制来识别部件......可能是通过HTML传递的ID。
  3. AJAX的界面应该更新数据库/文件并做必要的事情。
  4. 这是一个简单的布局。它需要做很多工作。做一些研究

    项目

答案 3 :(得分:0)

  • codemirror似乎是最好的
  • jquery.xmleditor可能就是您要找的。它们提供了用于编辑XML的图形UI。对于基于文本的XML编辑器,它们依赖于Cloud9编辑器。请注意,Cloud9已获得GPL许可。
  • LiveXMLEdit更像是一个类似浏览器的编辑器,但也许它有帮助
  • AXEL是一个基于文档模板创建XML创作应用程序的库。