C# 解析全局节点内的多个xml节点和子节点?
如何在一个XML文件中解析多个节点和子节点? 以下是文件结构:C# 解析全局节点内的多个xml节点和子节点?,c#,xml,C#,Xml,如何在一个XML文件中解析多个节点和子节点? 以下是文件结构: 我正在尝试为这个做一个读取器解析器,他成功地读取了对象和属性键, 但我不知道如何以这种格式读取节点及其子节点(如xml示例) 我的读者是: XmlDocument document=新的XmlDocument(); 文件加载(文件名); foreach(document.GetElementsByTagName(“对象”)中的XmlNode节点) { ushort id=ushort.Parse(node.Attributes[
我正在尝试为这个做一个读取器解析器,他成功地读取了对象和属性键,
但我不知道如何以这种格式读取节点及其子节点(如xml示例)
我的读者是:
XmlDocument document=新的XmlDocument();
文件加载(文件名);
foreach(document.GetElementsByTagName(“对象”)中的XmlNode节点)
{
ushort id=ushort.Parse(node.Attributes[“id”].InnerText);
//做一些事情
foreach(node.Attributes中的xmldattribute attr)
{
开关(attr.Name.ToLower())
{
案例“名称”:
//做事
打破
案例“param”:
//做事
打破
}
}
if(node.HasChildNodes)
{
foreach(node.ChildNodes中的XmlNode attrNode)
{
if(attrNode.Attributes!=null&&
attrNode.Attributes.Count>0&&
attrNode.Attributes[“key”]!=null&&
attrNode.Attributes[“value”!=null)
{
字符串值=attrNode.Attributes[“value”].InnerText;
开关(attrNode.Attributes[“key”].InnerText.ToLower())
{
案例“测试”:
//做有价值的事情
打破
}
}
}
}
请问,对于这种情况下的XML解析节点和子节点,有什么C#解决方案吗?我认为
nodeList=root.SelectNodes()
-在这方面不是更好的主意。
-是对象的子节点,这有一个非静态(对于每个对象-不同)类型的子对象。有什么想法吗?递归函数可以工作吗
static void Main() {
XmlDocument doc = new XmlDocument();
doc.Load("test.xml");
ReadNode(doc.GetElementsByTagName("object")[0]);
Console.ReadLine();
}
static void ReadNode(XmlNode node) {
//Do something with each Node
if(node.Attributes.Count > 0) {
foreach(XmlAttribute attr in node.Attributes) {
//Do Something with each Attribute
}
}
if(node.HasChildNodes == true) {
foreach(XmlNode chlnode in node.ChildNodes) {
ReadNode(chlnode);
}
}
}
您可以使用
XmlNode.Name
来了解您正在处理的节点。不使用XmlDocument代替XmlDocument的任何原因(在我给出使用XDocument的完整答案之前)?XmlDocument没有具体的原因。但我很乐意看到,如何在XDocument上实现这一点!学习-永远不会太迟。您知道可以使用XPath选择节点…对吗?XmlNodeList MyNodes=XDoc.SelectNodes(“//子对象2 |//子对象3”);您想要输出什么?您已经展示了收集值的尝试,但除了要输出的值之外,没有显示其他值。我将读取这些数据,并将每个对象及其子对象添加到对象列表中。每个对象都有id和其他参数,类中字典的一些属性和子对象。是的,这是使用递归模式的想法。我将我试试这个。