[C#] XML XPath 대소문자 구분없이 인식하기

Programming/Code 2010.07.06 댓글 Joshua95
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

댓글