如果我的过滤器值agentDBIDs/DBID值= 103,如何获取CfgGroup/DBID值?如何过滤XmlDocument中的Xml数据
<?xml version="1.0" encoding="Windows-1252"?>
<ConfData>
<CfgAgentGroup>
<CfgGroup>
<DBID value="109" />
<tenantDBID value="1" />
<name value="group1" />
<contractDBID value="0" />
</CfgGroup>
<agentDBIDs>
<DBID value="103" />
<DBID value="994" />
</agentDBIDs>
</CfgAgentGroup>
<CfgAgentGroup>
<CfgGroup>
<DBID value="110" />
<tenantDBID value="1" />
<name value="group2" />
<contractDBID value="0" />
</CfgGroup>
<agentDBIDs>
<DBID value="102" />
<DBID value="103" />
<DBID value="1009" />
<DBID value="1010" />
<DBID value="1011" />
<DBID value="1012" />
<DBID value="1013" />
<DBID value="1014" />
<DBID value="1015" />
<DBID value="1016" />
<DBID value="1017" />
<DBID value="1018" />
<DBID value="1019" />
<DBID value="1020" />
</agentDBIDs>
</CfgAgentGroup>
</ConfData>
我可以过滤agentDBIDs/DBID价值,但我不知道如何得到它的CfgGroup/DBID值。这是我迄今所做的:
XmlNodeList nodeList = AllAgentGroupXML.SelectNodes("/ns:ConfData/ns:CfgAgentGroup/ns:agentDBIDs/ns:DBID", nsMgr);
foreach (XmlNode abc in nodeList)
{
if (abc.Attributes["value"].Value.ToString() == "103")
Console.WriteLine(abc.Attributes["value"].Value.ToString());
}
*注:NS =命名空间,nsMgr =的XmlNamespaceManager
更新:
使用相同的XML如上,是有什么方法搜索特定的agentDBID/DBID值并返回其CfgGroup/DBID值?如何使用where
子句?
UPDATE2: 基于上面的XML,我怎么能得到下面,如果我的搜索值= 994(指agentDBIDs/DBID值)的XML数据的一部分?
<CfgAgentGroup>
<CfgGroup>
<DBID value="109" />
<tenantDBID value="1" />
<name value="group1" />
<contractDBID value="0" />
</CfgGroup>
<agentDBIDs>
<DBID value="103" />
<DBID value="994" />
</agentDBIDs>
</CfgAgentGroup>
任何想法?
,如果你用同样的方法,只是不同的XPath什么问题:'/ NS:ConfData/NS:CfgAgentGroup/NS:CfgGroup/NS:DBID' – har07
嗨@ har07,没有价值 – YWah
我不请参阅XML中的任何名称空间。你不需要'ns'前缀和'XmlNamespaceManager'。 –