2010-01-20 6 views
4

나는이 문제를 아주 분명하게 설명하려고합니다. 나는 내 사용자 보고서를로드하는 MicroSoftReportViewer 사용자입니다. 그러나 그것을로드하기 전에 나는 somethings를 바꿀 싶다. 여기서 모든 것은 괜찮다. xpath를 사용하고 싶지만 XMLDocument를 사용하여 rdlc (xml) 파일을로드 할 때 xpath 표현식이 작동하지 않습니다. 작동하는 유일한 xpath는 "\"마녀가 뿌리를 내립니다. 나는 메모장 파일을 열고 첫 번째 XML 노드가 내가 된 XMLSchema 추가하지만 여전히 XPath는 작동하지 않습니다와의 XMLReader를 사용하여 파일을 읽으려고 이러한 스키마 xpath 및 rdlc 보고서 사용

xmlns="http://schemas.microsoft.com/sqlserver/reporting/2005/01/reportdefinition" 
xmlns:rd="http://schemas.microsoft.com/SQLServer/reporting/reportdesigner" 

사용하는 것을 보았다. xpath가 작동하도록 파일을로드하는 방법을보기 위해 코드의 평화를 얻는 것에 대해 매우 감사하게 생각합니다.

최고 감사합니다, Iordan

답변

5

미안 두려워 트로닉 필요는 XPath에 문을 확실하게 볼 수 있지만 내 생각은 네임 스페이스의 문제입니다. 접두사되지

요소는 상기 문서
http://schemas.microsoft.com/sqlserver/reporting/2005/01/reportdefinition로 설정하는 default namespace에있다.

이제 XPath 쿼리는 이러한 네임 스페이스를 쿼리에 포함시켜야합니다. selectSingleNode (/elementnameicanseeinnotepad)는 아무 것도주지 않습니다.

쿼리에 네임 스페이스를 추가하려면 XmlNamespaceManager 클래스를 사용하거나 권장하지 않는 XPath의 자세한 구문을 사용해야합니다.

// get an instance 
XmlNamespaceManager xMngr = new XmlNamespaceManager(); 
// associate the prefix ´def´ with the namespace-uri from the xml document we loaded 
xMngr.AddNamespace(`def´, http://schemas.microsoft.com/sqlserver/reporting/2005/01/reportdefinition); 
// associate the prefix ´rd´ (same as used in document) with the namespace-uri from the xml document we loaded 
xMngr.AddNamespace(`rd´, http://schemas.microsoft.com/SQLServer/reporting/reportdesigner); 

// use the prefix(s) in the XPath query 
xDoc.DocumentElement.SelectSingleNode(´/def:elementnameiseeinnotepad´, xMngr); 

희망 사항.

+0

안녕하세요, 답변을 많이 주셔서 감사합니다. 내가 잘해야 할 필요가 있습니다. 정상적으로 작동합니다. – IordanTanev

관련 문제