2011-10-15 3 views
0

xml 파일을 읽고 노드를 검색하는 웹 서비스를 만들려고합니다. 그러나 때마다 내가 얻을 내가 코드 모든 다른 작품이 부분을 차단, 그래서 난이 올바른 일을하고 있지 않다 생각하고 있다면 return base.Channel.MymethodName(username);C# XML 파일로드 및 노드 찾기 노드

XmlDocument doc = new XmlDocument(); 
doc.Load("C:\\CustomerDatabase.xml"); 
XmlNode root = doc.DocumentElement; 
string searchpath = "//CustomerInformation[CustomerName'" + name + "']"; 
XmlNode userNode = root.SelectSingleNode(searchpath); 

을 말한다 다시 오류. 나는 여기에서 할 수있는 모든 게시물을 읽었으며 문제에 대해서는 여전히 운이 없다. 어떤 제안이나 도움이 필요합니까?

는 업데이트 :

내 xml 파일이

<CustomerInfo> 
<CustomerInformation> 
    <name>JohnDoe</name> 
</CustomerInformation> 
</CustomerInfo> 

나는 내 코드의 각 라인을 주석 시작했다 그리고 난이 하나라고 생각처럼 보인다

는 문제

XmlNode userNode = root.SelectSingleNode(searchpath); 

어떤 아이디어를 얼마나 I 고칠 수있다

2 차 편집 : 나는 열려고 시도하고있다. 그는 입력 된 이름이 XML 파일에 있는지 볼 수 있도록 파일을 보냅니다. 그래서 꽤 많은 사람이 JohnDoe에 입력하면 사람이 이미 존재한다는 문자열을 보냅니다.

+0

무엇인가? – Damith

+0

Fx3 이상이면 XDocument가 더 쉽고 빠릅니다. 그러나이 코드를 오류와 일치시키는 것은 매우 어렵습니다. (어떻게)'null '에 대해 userNode를 테스트합니까? –

+1

코드를 통해 디버깅 할 수 없으므로 정확히 예외가 발생했으며 어떤 예외가 발생했는지 알 수 있습니까? 귀하의 오류가 매우 유익한 것으로 보입니다. – Falanwe

답변

0

시도,

string searchpath = "//CustomerInformation[name='JohnDoe']"; 

또는 Linq에-XML을 사용합니다. 오류의 내부 예외

var result = (from ele in XDocument.Load(@"c:\CustomerDatabase.xml").Descendants("CustomerInformation") 
        where ((string)ele.Element("name")) == "JohnDoe" 
        select ele).FirstOrDefault(); 
if(result!=null) 
    { 
    // 
    } 
0

XPath가 이상하게 보입니다. 여기 찾고 제안 : http://www.w3schools.com/xpath/xpath_syntax.asp

는 아마도이 더 잘 작동 것 :

다른 사람이 말했듯이
string searchpath = "//CustomerInformation[@CustomerName='" + name + "']"; 

, 당신은 내부 예외를 제공 할 수있는 라인이 오류가 발생합니다?

0
string searchpath = "//CustomerInformation[./name='" + name + "']";