问题标签 [e4x]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
apache-flex - 在 E4X (AS3 - Flex) 中删除/替换节点
我正在应用程序中构建列表/网格控件并在Web 应用程序Flex
中使用它。.NET
长话短说,我从序列化对象的 Web 服务中获取 XML。我有一个页面上可以有多少东西的页面限制。我采用了一个数据网格并将其制成页面,跨页面排序,并处理一些基本过滤。
关于分页,我使用在页面上键入的 Dictionary 并存储该页面的 XML。这样,每当用户返回我保存到此字典中的页面时,我都可以从本地内存中获取 XML,而不是访问 web 服务。基本上,我正在缓存从每次调用 web 服务中检索到的数据以获取一页数据。
有几件事可以使我的缓存过期。过滤和排序是主要原因。但是,用户可以通过打开编辑器来编辑网格中的一行数据。他们编辑的数据可能会导致行中显示的数据过时。我可以轻松地访问 Web 服务并获取整个数据页面,但由于页面大小是在运行时设置的,因此我可能会查看大量要检索的记录。
因此,现在让我谈谈我遇到的问题的核心。为了防止取回整个数据页面,我调用了 web 服务,请求完全更新的记录(编辑器处理保存其数据)。
由于我使用的是自定义对象,因此我需要在服务器上将它们序列化为 XML(这已经为我们软件的其他部分处理了)。所有数据都通过 e4x 中的 XML 处理。Dictionary 中的缓存存储为 XMLList。
现在让我向您展示我的代码...
基本上,我得到了要替换的节点的 id。然后我在缓存的 Data 属性 ( XMLList
) 中找到它。我确保它存在,因为第二行的过滤器返回XMLList
.
我遇到的问题是删除行。我无法使该行从列表中删除该节点。删除行之后的行有效。我已将节点添加到列表中。
如何替换或删除该节点(即我从缓存的 .Data 属性中的过滤语句中找到的节点)???
希望我所有变量的下划线在发布时都不会被转义!否则this._ == this
._
javascript - E4X:分配给根节点
我在这里使用 Adobe Flex/Air,但据我所知,这适用于所有 JavaScript。我遇到过几次这个问题,并且必须有一个简单的解决方案!
假设我有以下 XML(使用 e4x):
我可以使用以下代码更改示例节点的内容:
但是,如果我有这个:
如何更改根节点的内容?
显然不起作用,因为我试图将字符串分配给 XML 对象。
javascript - 使用 e4x 在 Flex 中编辑 XML
在 Flex 中,我有一个 xml 文档,如下所示:
在运行时,我想为根下的每个节点创建一个 TextInput 控件,并将值绑定到 XML 中的值。据我所知,我不能在运行时使用 BindingUtils 绑定到 e4x 节点(如果我在这里错了,请告诉我!),所以我正在尝试手动执行此操作:
我的问题是,当用户编辑其中一个 TextInputs 时,分配给的节点始终是 for 循环中遇到的最后一个节点。我习惯了 C# 中的这种模式,每次创建匿名函数时,都会获取所用值的值的“快照”,因此每个处理函数中的“节点”会有所不同。
如何“拍摄快照”节点的当前值以在处理程序中使用?或者我应该在 Flex 中使用不同的模式?
actionscript-3 - Actionscript3 E4X XML 和 CSS:我真的必须使用 CDATA 吗?
在 XML 中使用 CSS 时,例如
在闪存中解析时,如果我不使用 CDATA,如下所示:
然后解析的数据会为它看到的每个“<”字符下降一行。
将数据解析为单行文本字段时,没有显示任何内容,因为它实际上是在一行中。当我把它包在里面时CDATA
,效果很好。我玩过prettyIndent
,据我所知ignoreWhite
,默认情况下是真的。
有没有一种方法可以在不使用CDATA
并保持隐含行中断的情况下解析数据?
编辑 1 (10/10/08):谢谢,但我实际上是在寻找函数或方法。转义每个都比使用 CDATA 麻烦得多。我不想使用 CDATA 的唯一原因是我被教导要远离它。如果 ActionScript 具有与 E4X XML 处理相关联的方法,该方法将消除将我的 XML 包装在 CDATA 中的要求,我很想知道它。
编辑 1(2008 年 10 月 15 日):谢谢菲利普!我从来没有想过 Flash 中的 HTML 格式会被视为空格。答案是
<3AS3
javascript - 为什么这个 E4X 代码不尊重默认命名空间?
我正在研究 Firefox 扩展,试图使用 E4X。但是,我遇到了一个奇怪的问题:
前两个日志语句打印“Guys”。第三个是空白。这是怎么回事?我已经指定了默认命名空间,它实际上与我在第二个日志语句中使用的完全一样。为什么这不起作用?
xml - E4X 条件调用仅返回 1 个匹配项不返回任何内容?
好的,这是我的代码:
似乎只有在出现超过 1 次时才会找到它。
难道我做错了什么?
xml - 为什么在 AS3 中,XML 和 XMList 是不相关的(继承方面)类?
我不禁认为,使 XML 和 XMLList 都无关,因为两者都直接扩展 Object,这是 AS3 核心库中的设计缺陷。当然,让 XML 扩展 XMLList 会是一个更简洁的系统,其中 XML 被认为是只有一个成员的 XMLList?
这也将避免 E4X 查询可能返回 XML 或 XMLList 的非常烦人的做法,这可能会导致转换错误。
那么有什么理由我不认为 XML 和 XMLList 被设计为仅将 Object 作为一种通用类型?
xml - 如何让远程对象在 E4X 中返回 XML?
我正在编写一个充分利用 BlazeDS 到 Java 服务器的 Flex 应用程序。我经常使用远程对象,但我遇到过一个实例,接收 XML 比返回对象更干净、更快。
通过 BlazeDS 返回 XML 非常简单。我在 Java 上使用 Dom4j 构建 XML,并通过 BlazeDS 服务返回根元素。BlazeDS 为我将 Dom4j 对象转换为 XML。
在 Flex 端接收这个对象时,都是 ObjectProxy 对象而不是 XML。我之前在 HttpService 调用中看到过这个问题,为了解决这个问题,我将 resultFormat 更改为 E4X。
但是,我无法在 RemoteObject 服务调用上设置 resultFormat。
无论如何我可以将这些 ObjectProxies 转换为 E4X 格式的 XML 吗?
apache-flex - 如何判断 E4X 表达式是否匹配?
我正在尝试访问 XMLList 项并将其转换为 XML 对象。
我正在使用这个表达式:
例如,如果有匹配,则一切正常,但如果没有匹配,那么当我尝试将其转换为 XML 时会出现错误,说明它必须格式正确。因此,在将表达式转换为 XML 之前,我需要确保表达式得到匹配。我尝试将其设置为 XMLList 变量并检查它是否为 text() 属性,如下所示:
但如果没有匹配,它仍然会给我一个错误。如果有匹配,它工作正常。
谢谢!