XML XPath 대소문자 구분없이 인식하기
XML을 사용하다보면, 노드 이름이나 Attribute 이름을 대소구분 없이 사용하고 싶을 때가 있습니다. 초기 설계부터 한 사람이 설계했다면야 그럴리 없겠지만, 각 파트별도 다양한 사람이 설계를 했을 경우, 어떤 사람은 소문자만을, 어떤 사람은 대소문자 섞어서 사용할 수 있다는 것이지요. 기본적으로 XML에서는 대소구분 안 하니 별 문제 없이 사용할 수 있습니다만, C#에서의 XML XPath 사용 시에는 대소구분을 제대로 해 주는군요.
대소구분 안 하려고 이래저래 찾아봤더니, translate 를 사용해서 하면 된다는군요. 코드가 길어져서 그다지 내키지는 않지만 일단 급한 마음에 사용했더니 잘 되는군요. 성능 측면에서는 어떨지 모르겠네요.
아래와 같이 사용하면 됩니다.
예)<item name='MyName'> 인 경우 인식하기
XmlNode subNode = Node.SelectSingleNode("item[translate(@name, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ','abcdefghijklmnopqrstuvwxyz')='myname']");
- 2010.07.06 Joshua95
XML을 사용하다보면, 노드 이름이나 Attribute 이름을 대소구분 없이 사용하고 싶을 때가 있습니다. 초기 설계부터 한 사람이 설계했다면야 그럴리 없겠지만, 각 파트별도 다양한 사람이 설계를 했을 경우, 어떤 사람은 소문자만을, 어떤 사람은 대소문자 섞어서 사용할 수 있다는 것이지요. 기본적으로 XML에서는 대소구분 안 하니 별 문제 없이 사용할 수 있습니다만, C#에서의 XML XPath 사용 시에는 대소구분을 제대로 해 주는군요.
대소구분 안 하려고 이래저래 찾아봤더니, translate 를 사용해서 하면 된다는군요. 코드가 길어져서 그다지 내키지는 않지만 일단 급한 마음에 사용했더니 잘 되는군요. 성능 측면에서는 어떨지 모르겠네요.
아래와 같이 사용하면 됩니다.
예)<item name='MyName'> 인 경우 인식하기
XmlNode subNode = Node.SelectSingleNode("item[translate(@name, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ','abcdefghijklmnopqrstuvwxyz')='myname']");
- 2010.07.06 Joshua95
'Programming > Code' 카테고리의 다른 글
파일/폴더 존재 여부 파악하기 (1) | 2010.12.09 |
---|---|
[C#] Collection vs List (0) | 2010.09.28 |
[MFC] VS 2008에서 OnInitDialog 이벤트 함수 추가하기 (8) | 2010.05.26 |
[C#] 모델리스(modeless) 다이얼로그 이벤트 처리하기 (0) | 2010.04.28 |
[C#] ObservableCollection을 List로 변환하여 정렬하기 (0) | 2010.03.25 |
댓글