【问题标题】:Dynamically get random values from a set of values in xml从xml中的一组值中动态获取随机值
【发布时间】:2012-09-14 04:32:01
【问题描述】:

我现在需要从 XML 中的值列表中获取一些随机值。让我解释清楚。将其视为我的 XML。

<data>
    <value>
        <name>a</name>
        <age>1</age>
    </value>
    <value>
        <name>b</name>
        <age>2</age>
    </value>
    <value>
        <name>c</name>
        <age>3</age>
    </value>
    <value>
        <name>d</name>
        <age>4</age>
    </value>
    <value>
        <name>e</name>
        <age>5</age>
    </value>
</data>

我必须以随机方式动态解析 3 个值。即如果 a,b,c 在下次加载页面时显示一次,它必须以随机顺序显示 d,b,e 或任何其他。我必须如何处理它。

【问题讨论】:

  • 我什么都没试过。我知道xml解析。我需要一些脚本来随机生成值
  • 你看过this的帖子吗?
  • 感谢您的链接。我是 Html 和 Javascript 的新手。我对此没有任何想法。很抱歉
  • 我建议您使用 DOMParser (MDN, W3C) 将 XML 转换为文档,然后显示 3 个随机值元素。或者隐藏除 3 个随机值元素之外的所有元素。
  • @RobG 我认为它太复杂了 作为网络技术的新手。有一些简单的方法。期待

标签: javascript html xml parsing xml-parsing


【解决方案1】:

这是一个将 XML 字符串转换为文档的函数。然后您可以在文档上使用 DOM 方法:

var stringToXMLDoc = (function(global) {

  // W3C DOMParser support
  if (global.DOMParser) {
    return function (text) {
      var parser = new global.DOMParser();
      return parser.parseFromString(text,"application/xml");
    }

  // MS ActiveXObject support
  } else {
    return function (text) {
      var xmlDoc;

      // Can't assume support and can't test, so try..catch
      try {
        xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
        xmlDoc.async="false";
        xmlDoc.loadXML(text);
      } catch (e){}
      return xmlDoc;
    }
  }
}(this));

例子:

var xml = '<books>' + 
            '<book title="foo"/>' +
            '<book title="bar"/>' +
            '<book title="baz"/>' +
          '</books>';
var doc = stringToXMLDoc(xml);
alert(
  doc.getElementsByTagName('book')[2].getAttribute('title')
);

你应该能够对值节点做类似的事情。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-02-11
    • 1970-01-01
    • 2018-06-19
    • 1970-01-01
    • 2022-10-08
    • 2010-12-11
    相关资源
    最近更新 更多