2013-08-12 4 views
0

정규식을 처음 사용합니다. <firstpar>에서 텍스트 부분 만 캡처하거나 자식 노드와 값이 모두있는 <asmbly>을 모두 제거하고 싶습니다. 누구든지 저에게 어떻게하는지 보여줄 수 있습니까? 다음은 XML 파일의 스냅 샷입니다. 감사.정규 표현식을 사용하여 중첩 된 요소를 제거합니다.

<?xml version="1.0" encoding="UTF-8"?> 
<firstpar> 
    <thumbcred>Sample 1 thumbcred</thumbcred> 
    <asmbly> 
     <caption> 
      <p><work ty="drawing">Two Fabulous Animals</work>Sample 1 <e> sample 1caption </e></p> 
     </caption> 
     <credit>Paul Miller/AP</credit> 
     <asset id="126099" hgt="450" wdth="289" tmstp="24-OCT-08" 
      bintype="2" filename="images/sample126099.jpg" source="eb" bighgt="1600" 
      bigwdth="1029" bigfilename="botany003.jpg" 
      bigdeployfullfilename="/eb-media/99/126099-050-CAD1EF0A.jpg" 
     /> 

     <copyright>Copyright © 1994-2013 Encyclopædia Britannica, Inc.</copyright> 
    </asmbly> 

Sample firstpar text <e>Sample e</e> just some 
text <sub>sample sub </sub><e>sample e text again</e> more text with sup sub e. 

    </firstpar> 
+7

필자는 전문가는 아니지만 정규 표현식이 아닌 xml 파서가 필요하다고 생각합니다. – StephenTG

+1

XML 구문 분석 라이브러리 **를 사용하지 마십시오. ** 정규식이 아닙니다. XML은 일반 언어가 아닌 컨텍스트 프리 언어입니다. – Amy

+0

사용할 수있는 많은 좋은 (무료) XML 파서가 많이 있습니다. 어떤 언어를 사용하고있어서 올바른 도구와 사용법을 알려줄 수 있습니까? –

답변

2

불행히도, 정규식의 알려진 제한 사항 중 하나는

당신은 당신이 사용하는 어떤 언어로 볼 수 있습니다 어떤 XML 파서 사용해야 수 있습니다 중첩 하지 핸들을 수행한다는 것이다.


일부 작업을 수행 할 정규식을 사용하는 것이 가능한 것보다 당신이 XML의 매우 구체적으로 형성 조각, 그리고 매우 구체적인 목표를 가지고있는 경우,하지만 당신은 비에 정규식을 적용하려고하면 특정 XML 조각을 처리 할 수 ​​없습니다.

+2

첫 문장은 약간의 일반화입니다. PCRE와 .NET의 정규 표현식 모두 중첩을 매우 잘 처리 할 수 ​​있습니다 (OP는 C#을 사용하는 경우도 있습니다). 그리고 일부 간단한 경우에는 매우 우아하게 처리 할 수 ​​있습니다. 속성 값, XML 주석, CDATA 및 XML에 강력한 정규 표현식을 작성할 수 없게 만드는 이것 저것 때문에 XML은 엄청나게 복잡합니다. –

관련 문제