2010-06-18 1 views
0

가능한 복제를 유지, 태그를 제거합니다 :
RegEx match open tags except XHTML self-contained tags정규식은 CDATA에게

안녕 모두,

나는 모든 사람들이 정규식 질문을 사랑하는 방법을 알고, 그래서 여기 내 꺼야. 일부 노드에 CDATA가 포함 된 XML 트리가 있습니다. 데이터가 포함 된 문자열 만 반환하려면 어떻게해야합니까?

내가 대해 정기적으로 하나 불규칙한 언어를 해석하지 읽은

I'm plain text. I'm text in cdata... and may contain html, yikes! 

돌아올 것이라고 예

<xml> 
    <node>I'm plain text.</node> 
    <node><![CDATA[I'm text in cdata... and may contain html, <strong>yikes!</strong>]]></node> 
</xml> 

를 볼 수 있습니다,하지만 난이 행할 확신합니다. 너희들은 뭐라 생각하니?

덕분에, 케빈

편집 :이것은 XML의 몇 줄을 처리 할 수있는 신속하고 더러운 솔루션을 필요로 문제가 있었다. 나는 초기의 거절에 놀랐지 만, 더 읽기 (특히 나중에 제공되는 링크에서) 나는 경험이 풍부한 프로그래머들이 그것이 가능한 한 피해야 만하는 것이 있음을 안다. 라이브로 배우십시오. 감사.

+0

특히 다음을 참조하십시오. http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454 – Piskvor

+0

@Piskvor : 왜 두 번 연결하고 있습니까? 같은 질문? –

+0

그래, 그걸 가지고있어. 그리고 같은 해고에 대한 두 개의 링크. 유용합니다, 고마워요. –

답변

5

정규식을 사용하지 마십시오. XML/HTML 구문 분석기를 사용하십시오.

이 문제는 고의로 사망했습니다.

+0

"HTML을 정규 표현식으로 파싱하려고하면 Cthulhu의 어둠의 유혹에 굴복합니다. 코드 ..."- Jeff Atwood. http://www.codinghorror.com/blog/2009/11/parsing-html-the-cthulhu-way.html –

1

이 문제를 해결하는 것이 얼마나 어려운지에 대한 예제는 boilerpipe을 참조하십시오.