从xml中的一组值动态获取随机值

时间:2012-09-14 04:32:01

标签: javascript html xml parsing xml-parsing

我现在需要从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或任何其他。我该怎么处理它。

1 个答案:

答案 0 :(得分:0)

这是一个将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')
);

您应该可以使用值节点执行类似的操作。