【问题标题】:Ignoring case on E4X node names and attributes?忽略 E4X 节点名称和属性的大小写?
【发布时间】:2011-01-09 13:11:28
【问题描述】:

有谁知道忽略 XML 节点名称和属性上的大写/小写/驼峰式的技巧吗?

一个简单的例子:我给我的客户端一个 XML 文件,其中包含一个名为 fooID 的 XML 属性,但客户端可以更改 XML,并且 - 不知道大小写更改或在“fooid”下添加一个属性。自然,我的解析器(在 AS3 中)会忽略所有小写属性。请注意, fooID 中包含的值不是这里的问题,而是属性名称本身。有什么想法吗?

【问题讨论】:

  • 我对此表示怀疑。 XML 本质上是区分大小写的,所以fooidfooIDpotato193638_lemons 一样不同。您需要一个后处理步骤来将每个节点重命名为首选案例。
  • thnx bobince 我也这么想。可能有可能处理原始 xml 字符串并检查每个 xml 标记(例如通过正则表达式)并转换它的大小写。但为了确保忽略任何拼写错误,这将是一项繁重的工作。如果 AS3 XML 和 XMLList 类有一个像 'ignoreCase' 这样的属性,那真的很酷!

标签: xml actionscript-3 actionscript case e4x


【解决方案1】:

在您的 xml 查询中使用 RegExp,并使其不区分大小写

const list:XMLList = xml.*.(@name.toString().search(new RegExp("hello", "i") )!= -1);

【讨论】:

    【解决方案2】:

    您可以编写自己的 XML 解析器(旧的、E4X 之前的方式),在其中递归遍历所有节点,查找您选择的节点名称,然后写出对象图或存储解析的 XML以其他方式。这涉及针对任何允许的节点名称(伪代码:if nodename == "fooID" then do something with the node)测试每个节点名称。因为您在每个节点上进行 iffing,您可以通过小写 nodename 和“fooID”来规范匹配。

    很麻烦,但能解决问题。

    【讨论】:

      【解决方案3】:

      这似乎对我有用:

      var lowerCasePropertyName:String = propertyName.toLowerCase();
      var xmlItem:XMLList = xml.*.(attribute("name").toString().toLowerCase()==lowerCasePropertyName);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-11-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-11-12
        相关资源
        最近更新 更多