2013-08-12 2 views
0

Я новичок в регулярном выражении. Я хочу только захватить текстовую часть от <firstpar> или удалить все <asmbly> со всеми его дочерними узлами и значениями. Может ли кто-нибудь показать мне, как это сделать. Ниже приведен снимок xml fiel. Благодарю.удалить вложенный элемент с помощью регулярного выражения

<?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, ** NOT ** regex. XML - это контекстно-свободный язык, а не обычный язык. – Amy

+0

Есть много хороших (и свободных) синтаксических анализаторов XML. Какой язык вы используете, чтобы мы могли указать вам на правильный инструмент и как его использовать? –

ответ

2

К сожалению, один из известных ограничений регулярных выражений является то, что он делает не ручку гнездящихся

Вы можете и должны использовать любой XML-парсер доступна на любом языке, который вы используете.


Если у вас есть очень конкретно формируется кусок XML, и очень конкретную цель, чем можно использовать регулярное выражение для выполнения некоторых операций на нем, но как только вы пытаетесь применить регулярное выражение к не- определенной части xml, он не сможет справиться с этим.

+2

Это первое утверждение - это немного обобщение. И PCRE, и regex-вкус .NET могут очень хорошо обрабатывать вложенность (и OP, случается, использует C#), и для некоторых простых случаев довольно элегантно. Более того, XML смехотворно сложен из-за значений атрибутов, комментариев XML, CDATA и еще чего-то, что делает невозможным писать надежное регулярное выражение для XML. –