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 に答える