2012-12-20 1 views
0

선택한 "Xpath 위치"의 모든 요소를 ​​가져 와서 콤보 상자/드롭 다운 목록에 추가하려고합니다.인코딩하지 않은 XML 파일의 물음표로 인해로드하는 동안 오류가 발생합니다.

Xpath 쿼리를 사용하여 이러한 모든 요소를 ​​선택하려고했습니다. XpathNodeIterator의 Select 메서드로/@ *를 시도했습니다.

문제는 앞으로 나아 가지 않는 반복자를 반환한다는 것입니다. 사실, 자식은 없으며 iterator를 xmlElement 또는 노드로 변환하지 못하게하므로 적어도 내부를 검색 할 수 있습니다. 그들.

while (anIterator.MoveNext()) 
      { 
       //im trying to select all nodes of selected path which and return them to an iterator 
       secondIterator = anIterator.Current.Select("/@*");      

       while (secondIterator.MoveNext()) 
       { 
        aNode = new Nodes(); 
        aNode.Name = anIterator.Current.MoveToFirstChild().ToString(); 
        nodeList.Add(aNode); 
       } 
       nodeList.Add(aNode); 
      } 

현재 노드의 모든 요소를 ​​얻기 위해 모든 솔루션 :

코드인가?

+0

XML이란 무엇입니까? 우리는 어떻게 추측 할 수 있습니까? –

답변

0

XML 파일이 없으면 대답하기가 어렵고,보고 싶은 내용과 현재보고있는 내용을 말하지 않아도됩니다. 당신의 XPath에서

'@'문자가 현재 노드의 모든 속성을 얻기 위해 노력하고 제안 :

는 여기에 몇 가지 관측이다. '/'는 Path를 DOM의 루트에서 시작하도록 지시합니다.

현재 노드 아래에있는 모든 요소를 ​​얻으려고 노력하는 경우, 당신은

0

문제 "./*"로 변경할 수 있습니다 당신이 아이를 선택하려는 것을 나타내는 @입니다 속성, 하위 요소가 아닙니다. (http://www.w3.org/TR/xpath/#path-abbrev 참조).

어린이 요소를 얻으려면 anIterator.Current.Select("*")을 시도하십시오. 직접 자식뿐만 아니라 모든 하위 요소를 원하면 anIterator.Current.Select(".//*")

관련 문제