C# 通过XmlDocument解析Xml属性
你好 我尝试解析Xml文档: 结构:C# 通过XmlDocument解析Xml属性,c#,xml,xmldocument,C#,Xml,Xmldocument,你好 我尝试解析Xml文档: 结构: <root> <SelectedConfig name="configuration1"/> <config name="configuration1"> <Column Id="0" name="111"/> ... </root> ... 我试着这样解析它: XmlNode configNameNode = _doc.SelectSingleNode("//
<root>
<SelectedConfig name="configuration1"/>
<config name="configuration1">
<Column Id="0" name="111"/>
...
</root>
...
我试着这样解析它:
XmlNode configNameNode = _doc.SelectSingleNode("//SelectedConfig");
if (configNameNode != null)
{
string configName = configNameNode.Attributes["name"].Value;
var config = _doc.SelectNodes("//config");
XmlNodeList columnNodes = _doc.SelectNodes("//config/Column");
foreach (XmlNode node in columnNodes)
{
var id = node.Attributes["Id"].Value;
var name = node.Attributes["name"].Value;
Tuple<string, String> numberOfColumnToColumnName = new Tuple<string, string>(id, name);
numberOfColumnToColumnNameTupleColl.Add(numberOfColumnToColumnName);
}
}
XmlNode configNameNode=\u doc.SelectSingleNode(“//SelectedConfig”);
如果(configNameNode!=null)
{
字符串configName=configNameNode.Attributes[“name”].Value;
var config=_doc.SelectNodes(“//config”);
XmlNodeList columnNodes=_doc.SelectNodes(“//config/Column”);
foreach(columnNodes中的XmlNode节点)
{
var id=node.Attributes[“id”].Value;
var name=node.Attributes[“name”].Value;
Tuple numberOfColumnToColumnName=新元组(id,名称);
numberOfColumnToColumnNameTupleColl.Add(numberOfColumnToColumnName);
}
}
但是,如果我补充:
<config name="configuration2">
我得到了//config/column的N*2个节点
如何仅从配置1或2中选择一组xml节点
谢谢大家! 您有多个节点“配置”,每个节点都有多个子节点“列”。因为所有这些节点都有相同的名称,只是属性不同,所以函数
XmlNodeList columnNodes=\u doc.SelectNodes(“//config/Column”)代码>将收集所有“配置”的所有“列”节点。
解决方案1:将配置节点重命名为config_xxx,例如config_configuration1。但我认为这不是你想要的。
解决方案2:config=\u doc.SelectNodes(“//config”)代码>已为您获取节点列表。在列表中为config中的每个cfgEntry运行,在每个节点上调用cfgEntry.SelectNodes(“列”)
。然后,您将只获得单个配置节点的列节点 如果您试图获取所选配置,可以尝试以下代码
string xPath = string.format("//config[@name='{0}']/Column", configName);
var config = _doc.SelectNodes(xPath);
尝试configNameNode.SelectNodes(“//config”)
我认为[attrib=…]
应该在“config”后面,而不是“column”后面。。。?