2013-02-13 3 views
1

xpaths로 가득 찬 클래스가 있습니다. 이제는 특정 네임 스페이스가 필요합니다. 이것을 어떻게 할 수 있습니까? 이 코드를 리팩토링하는 가장 쉬운 방법은 무엇입니까? 대체 찾으세요?xpath에 네임 스페이스 추가하기

미리 네임 스페이스를 모르는 경우 미래에 특정 노드를 잡는 가장 좋은 방법은 무엇입니까?

susr1 = root.SelectSingleNode("/PurchaseOrderRequest/DocumentHeader/DocumentInformation/DocumentIdentification/Type"); 

susr1 = root.SelectSingleNode("/PurchaseOrderRequest/ssdh:DocumentHeader/ssdh:DocumentInformation/ssdh:DocumentIdentification/ssdh:Type"); 

답변

1

시도해 볼 수 있습니다. XML LibraryXPathElement()을 사용하십시오. 만약 당신이 그것을 사용할 수 있습니다. 닷넷 3.5 솔루션입니다.

XElement root = XElement.Load(file) or .Parse(string) 

그런 다음 xpath는 동일한 이름 (다른 네임 스페이스)을 가진 충돌하는 노드가없는 한 작동해야합니다.

XElement susr1 = root.XPathElement("/PurchaseOrderRequest/DocumentHeader/DocumentInformation/DocumentIdentification/Type"); 

XElement susr1 = root.XPathElement("/PurchaseOrderRequest/ssdh:DocumentHeader/ssdh:DocumentInformation/ssdh:DocumentIdentification/ssdh:Type"); 

라이브러리는 네임 스페이스를 알아야합니다. 확실한 xml 예제없이 테스트 할 수는 없습니다.

관련 문제