如何使用C#在不知道名称的情况下从XML中读取子节点
本文关键字:情况下 XML 子节点 读取 何使用 不知道 | 更新日期: 2023-09-27 18:28:01
如果之前有人问我这个问题,我深表歉意。(我只是在学习。)
比方说,我有以下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>
比方说,我通过使用到达"行"元素
//xmlReader is of type XmlReader
xmlReader.ReadToFollowing("Row");
但是,我如何收集所有不知道名字的"c*"子元素,以及其中有多少?
您还可以使用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
希望它能有所帮助!
使用Linq到XML,您可以只使用Elements()
来获取所有直接子级(或对任何子级使用Descendants
):
XElement root = XElement.Load("test.xml"); //contains your xml
foreach (var child in root.Elements())
{
Console.WriteLine(child.Name);
}
试试这个
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;
}
}
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;
}
}
}
}
这个代码可以工作。