2013-08-12 2 views
2

모든 값은 C#을 다음에 사전에 추가되지 않아요 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); 
      } 
     } 
    } 

이 곳은 3 값은 'Bugs_Filter'에 표시되는 반면 루프가 두 번째로 올 때 첫 번째 값만 나타납니다. 내가 잘못하고있는 것을 제안하십시오.

내가 값을 추출하고 이로부터 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를 추출하고 있습니다.

+0

편집기를 사용하십시오 그 코드 덕분에 당신의 코드 중 일부가 누락 – MethodMan

+0

를 포맷하고 그것을보고 도움이 될 수 있어요 XML –

+0

여기에 3 개의 값을 게시 할 수 있습니까? – Krishna

답변

-1

시도해 보셨습니까?

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

전체 경로를 지정 했으므로 매번 루트 요소에서 검색을 시작합니다. .함으로써 당신은 말할 this 현재는 "이 노드에서 FILTERNAME 노드"같은 BNode

2

당신이 뭘 하려는지 알하십시오 을 당신이 filter 노드를 가지고있는 foreach 성명에서, 그 아래에 당신이 검색 전체 경로 "/ 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;