2012-06-04 2 views
1

내가 작업하고있는 응용 프로그램에는 쿼리를 위해 메모리에로드해야하는 XML 문서가 있습니다. 이렇게하려면 XmlDocument.Load(string path)으로 전화를 걸어 왔습니다. 그러나, 나는 최근에이 방법으로 이상한 행동을 보았습니다. 요소 무시 XmlDocument.Load?

*Snip* 
<Info name="name2" parent="name1" modifier="A"/> 
<Info name="name2" parent="name1" modifier="B"/> 
<Info name="name1" modifier="A"/> 
<Info name="name1" modifier="B"/> 
<Info name="name3" parent="name2" modifier="A"/> 
<Info name="name3" parent="name2" modifier="B"/> 
*Snip* 

위의 여섯 개 항목이 :

나는 (민감한 데이터를 제거하는 편집)과 같다 생성 된 파일이 있습니다. 그러나 XmlDocument.Load을 호출하면 첫 번째 2 개의 항목을 남겨두고 4 개의 항목 만로드됩니다. 나는 이것을 중단 점과 데이터 디버거를 통해 확인했다.

그러나, 수동으로 문서의 데이터를 재 배열 할 때 모든 데이터가 올바르게로드

*Snip* 
<Info name="name1" modifier="A"/> 
<Info name="name1" modifier="B"/> 
<Info name="name2" parent="name1" modifier="A"/> 
<Info name="name2" parent="name1" modifier="B"/> 
<Info name="name3" parent="name2" modifier="A"/> 
<Info name="name3" parent="name2" modifier="B"/> 
*Snip* 

것으로, 요소 것도 탈락되지 않는다. 내가 알 수있는 한, 문서는 잘 형성되어 있으며,로드 할 때 예외가 발생하지 않습니다. 또한 모든 항목에 인위적으로 parent 속성을 추가하면 모든 항목이 올바르게로드되지만 XML을 올바르게 이해하면 중요하지 않으며 코드의 누락 된 속성을 무효화한다는 점에 유의해야합니다. 또한 요소에 대해 지정된 네임 스페이스가 없습니다.

예상되는 동작입니까, 아니면 뭔가 빠졌습니까? 필요한 경우 자세한 내용을 제공 할 수 있습니다.

답변

1

난 그냥 같은 귀하의 예제를 시도 :

XmlDocument doc = new XmlDocument(); 
doc.LoadXml("<root><Info name=\"name2\" parent=\"name1\" modifier=\"A\"/><Info name=\"name2\" parent=\"name1\" modifier=\"B\"/><Info name=\"name1\" modifier=\"A\"/><Info name=\"name1\" modifier=\"B\"/><Info name=\"name3\" parent=\"name2\" modifier=\"A\"/><Info name=\"name3\" parent=\"name2\" modifier=\"B\"/></root>"); 
int count = doc.SelectNodes("//root/Info").Count; 

그리고 그것은 괜찮 았는데. 올바른 숫자 인 6이라는 값이 반환되었습니다. 직접 해보십시오. 그것이 당신을 위해 동일하게 작동하지 않으면, 당신의 설치와 함께 뭔가 망가져 있어야합니다. 그러나, 내가 의심하는 바, 그것이 당신을 위해 똑같이 작동한다면, 문제는 다른 것이되어야합니다.

작은 크기로 시작하고 실패 할 때까지 더 복잡해 지도록하십시오. XML에 문제가 있거나 XmlDocument 객체에서 노드를 읽는 방식에 버그가 있습니다.

+0

당신이 맞았습니다. 노드를 삭제하는 다른 곳에서는 관련없는 방법이있었습니다. 불일치를 발견하기 위해 코드를 사용했습니다. 감사! –

관련 문제