1

所有存在的值都没有被添加到 c# 中的字典中,以下是到目前为止的代码片段:

 XmlNodeList Bugs_filter = Bugs.SelectNodes("/criteria/includeFilterSets/filterSet/filter");
    if (Bugs_filter != null)
    {

        foreach (XmlNode BNode in Bugs_filter)
        {
            string data = BNode.SelectSingleNode("/criteria/includeFilterSets/filterSet/filter/filterName").InnerText;
            string aggregate = BNode.SelectSingleNode("/criteria/includeFilterSets/filterSet/filter/value").InnerText;

            {   
                 Dict.Add(data,aggregate);
            }
        }
    }

“Bugs_Filter”中总共存在 3 个值,而当它第二次进入循环时,它只获取第一个值。请建议我做错了什么。

请参阅我从中提取值的 XML:

 <?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><criteria><includeFilterSets><filterSet><filter><filterId>42</filterId>
    <filterName>PRODUCT_ID</filterName><operator><id>1</id><name>Equals</name></operator><value>1113</value></filter><filter><filterId>41</filterId>
    <filterName>FAMILY_ID</filterName><operator><id>1</id><name>Equals</name></operator><value>ESG</value></filter><filter><filterId>3</filterId><filterName>VERSION_NAME</filterName>
    <operator><id>1</id><name>Equals</name></operator><value>4.5</value></filter></filterSet></includeFilterSets><excludeFilterSets/><ordering/>
    <bugGroupSearchMode>0</bugGroupSearchMode><caseSensitive>true</caseSensitive><entityToSearch><id>1</id><name>BUG</name></entityToSearch></criteria>

请注意,我正在提取 PRODUCT_ID、FAMILY_ID 和 VERSION_NAME。

4

2 回答 2

1

请注意您在这里尝试做什么:在foreach语句中您有filter节点,并在它们下搜索整个路径“/criteria/includeFilterSets/filterSet/filter/filterName”。你不会像那样到达正确的节点。

相反,BNode.ChildNodes[1]BNode.ChildNodes[3]尊重地使用

string data = BNode.ChildNodes[1].InnerText;
string aggregate = BNode.ChildNodes[3].InnerText;

甚至更好:

string data = BNode["filterName"].InnerText;
string aggregate = BNode["value"].InnerText;
于 2013-08-12T13:56:20.970 回答
-1

你有没有尝试过?

string data = BNode.SelectSingleNode("./filterName").InnerText;
string aggregate = BNode.SelectSingleNode("./value").InnerText;

由于您提供了完整路径,因此它每次都从根元素开始搜索。通过.您说诸如“此节点下的过滤器名称节点”之类的内容,this当前在哪里BNode

于 2013-08-12T13:48:50.877 回答