如何使用C#从XML中读取子节点而不知道它们的名称?

如何使用C#从XML中读取子节点而不知道它们的名称?,c#,asp.net,xml,C#,Asp.net,Xml,如果之前有人问过我,我道歉。(我只是在学习。) 比如,我有以下XML: <Row> <c0>1</c0> <c1>31b64f1cb075</c1> <c2>Developer</c2> <c3/> <c4/> <c5/> <c6/> <c7/> <c8>USA</c8> <c9>http://www.microsof

如果之前有人问过我,我道歉。(我只是在学习。)

比如,我有以下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>

但是如何收集所有不知道其名称的“c*”子元素以及其中有多少子元素?

使用Linq to XML,您可以使用
元素()
获取所有直接子元素(或使用
子代
获取任何子代):


使用Linq to XML,您只需使用
Elements()
来获取所有直接子级(或对任何子级使用
子级
):


您还可以使用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);
  }
}
XmlDocument doc=新的XmlDocument();
doc.LoadXml(“yourxml”);
XmlNode root=doc.FirstChild;
//显示子节点的内容。
if(root.HasChildNodes)
{

对于(inti=0;i,您还可以使用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);
  }
}
XmlDocument doc=新的XmlDocument();
doc.LoadXml(“yourxml”);
XmlNode root=doc.FirstChild;
//显示子节点的内容。
if(root.HasChildNodes)
{
对于(int i=0;i
var xml=“…”
var xmlReader=xmlReader.Create(新的StringReader(xml));
if(xmlReader.ReadToFollowing(“行”))
{
while(xmlReader.Read())
{
if(xmlReader.NodeType==XmlNodeType.Element)
{
var name=xmlReader.name;
//读取元素的值。
while(xmlReader.Read())
{                            
if(xmlReader.NodeType==XmlNodeType.Whitespace)
打破
if(xmlReader.NodeType==XmlNodeType.Text)
{
var value=xmlReader.value;
}
else if(xmlReader.NodeType==XmlNodeType.EndElement)
打破
}
}
}
}
这段代码可以工作。

var xml=“…”
var xmlReader=xmlReader.Create(新的StringReader(xml));
if(xmlReader.ReadToFollowing(“行”))
{
while(xmlReader.Read())
{
if(xmlReader.NodeType==XmlNodeType.Element)
{
var name=xmlReader.name;
//读取元素的值。
while(xmlReader.Read())
{                            
if(xmlReader.NodeType==XmlNodeType.Whitespace)
打破
if(xmlReader.NodeType==XmlNodeType.Text)
{
var value=xmlReader.value;
}
else if(xmlReader.NodeType==XmlNodeType.EndElement)
打破
}
}
}
}
这段代码可以工作。

试试这个

                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;

                    }

                }
试试这个

                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;

                    }

                }

我以前从未使用过Linq,学习它需要更长的时间。没有它有什么方法可以做到吗?有多种访问和操作XML的方法,它们很相似,值得一看。我以前从未使用过Linq,学习它需要更长的时间。没有它有什么方法可以做到吗?有多种访问XML的方法在处理XML时,它们是相似的,值得一看。
                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;

                    }

                }