0

我正在创建一个视频库,并有一个按视频类别拆分的 XML 文档,例如:

<video>
    <comedy>
        <url>bla</url>
        <title>blabla</title>
    </comedy>

    <action>
        <url>bla</url>
        <title>blabla</title>
    </action>
</video>

等等。我使用 XMLHttpRequest 来获取我想要的类型的 getElementsByTagName() 并且它工作正常。

我的问题是:我想创建一个“最新”类别,它只会从 XML 文件的顶部选择前 16 个(或多个),而不管类别如何。有没有办法做到这一点?

4

2 回答 2

0

试试这个方法。

 xmlDoc.LoadXml(xml);

    XmlElement ele = xmlDoc.DocumentElement;

    if (ele.HasChildNodes)
    {
        for (int c = 0; c < ele.ChildNodes.Count; c++)
        {
            DisplayInfo(ele.ChildNodes[c]);
        }
    }


static void DisplayInfo(XmlNode node)
        {
            for (int a = 0; a < node.Attributes.Count; a++)
            {
                Console.WriteLine(node.Attributes[a].Name + " : " + node.Attributes[a].Value);
            }

            Console.WriteLine(node.Value);

            for (int c = 0; c < node.ChildNodes.Count; c++)
            {
                DisplayInfo(node.ChildNodes[c]);
            }
        }
于 2012-02-01T01:53:45.567 回答
0

遍历根元素的 childNodes,并检查该节点是否是元素节点(childNodes 还将返回 textNodes 的空白)

var doc=xml,//the xml-document
            childs=doc.documentElement.childNodes,
               i=-1,
               j=16;//how many nodes you like to get

    while(j && childs[++i])
    {
      if(childs[i].nodeType===1)//check if we got a element-node
      {
        j--;
        //do something with the element
        console.log(childs[i].tagName);
      }
    } 

在某些浏览器中,可能还有一个子属性,它只返回元素节点的子节点,但这不是标准,所以我不建议使用它。

当您使用像 jQuery 这样的库时,它会更容易获得相同的结果,您只需要:

$('>*:lt(16)',xml.documentElement)
  .each(function(i,o){console.log(o.tagName);});
于 2012-02-01T02:12:19.390 回答