我正在创建一个视频库,并按照视频类别拆分XML文档,例如:
<video>
<comedy>
<url>bla</url>
<title>blabla</title>
</comedy>
<action>
<url>bla</url>
<title>blabla</title>
</action>
</video>
等等。我使用XMLHttpRequest来获取我想要的类型的getElementsByTagName()并且它工作正常。
我的问题是:我想创建一个'最新'类别,只需选择XML文件顶部的前16个(或多个),无论类别如何。有没有办法实现这个目标?
答案 0 :(得分: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]);
}
}
答案 1 :(得分:0)
迭代root-element的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);});