如果之前有人问过,我道歉。 (我只是在学习这个。)
说,我有以下XML:
<Row>
<c0>1</c0>
<c1>31b64f1cb075</c1>
<c2>Developer</c2>
<c3/>
<c4/>
<c5/>
<c6/>
<c7/>
<c8>USA</c8>
<c9>http://www.microsoft.com</c9>
<c10>sales@microsoft.com</c10>
<c11/>
<c12/>
<c13/>
<c14>-2147483648</c14>
<c15>2012-03-08T09:55:42-08:00</c15>
<c16>00000000-0000-0000-0000-000000000000</c16>
<c17>587312C</c17>
</Row>
说,我使用:
进入“row”元素//xmlReader is of type XmlReader
xmlReader.ReadToFollowing("Row");
但是如何收集所有“c *”子元素,而不知道他们的名字以及有多少元素?
答案 0 :(得分:3)
你也可以使用XmlDocument加载你的xml,然后像这样循环遍历这些子节点
XmlDocument doc = new XmlDocument();
doc.LoadXml("yourxml");
XmlNode root = doc.FirstChild;
//Display the contents of the child nodes.
if (root.HasChildNodes)
{
for (int i=0; i<root.ChildNodes.Count; i++)
{
Console.WriteLine(root.ChildNodes[i].InnerText);
}
}
您可以在此处详细了解http://msdn.microsoft.com/en-us/library/system.xml.xmlnode.childnodes.aspx
希望它有所帮助!
答案 1 :(得分:2)
使用Linq to XML,您可以使用Elements()
获取所有直接子项(或使用Descendants
代表任何后代):
XElement root = XElement.Load("test.xml"); //contains your xml
foreach (var child in root.Elements())
{
Console.WriteLine(child.Name);
}
答案 2 :(得分:1)
试试这个
XmlDocument xdoc = new XmlDocument();//xml doc used for xml parsing
xdoc.Load(@"test.xml");//loading XML in xml doc
if (xdoc.ChildNodes.Count > 0)
{
XmlNodeList xm = xdoc.DocumentElement.ChildNodes;
// In this loop you have get all the child control
foreach (XmlNode x in xm)
{
string data= x.InnerXml;
}
}
答案 3 :(得分:0)
var xml="<Row>...</Row>"
var xmlReader = XmlReader.Create(new StringReader(xml));
if (xmlReader.ReadToFollowing("Row"))
{
while (xmlReader.Read())
{
if (xmlReader.NodeType == XmlNodeType.Element)
{
var name = xmlReader.Name;
//read value of element.
while (xmlReader.Read())
{
if (xmlReader.NodeType == XmlNodeType.Whitespace)
break;
if (xmlReader.NodeType == XmlNodeType.Text)
{
var value = xmlReader.Value;
}
else if (xmlReader.NodeType == XmlNodeType.EndElement)
break;
}
}
}
}
此代码可以正常工作。