2013-09-16 3 views
1

Мне нужно удалить тег XML в строку, которая заканчивается «секцией». Например, в следующей строке XMLJava String Замените тег Xml, который имеет определенное слово

<OldSection> 
    <sectionTitle>Sample Title</sectionTitle> 
    <label> Hello Label </label> 
    <heading>Hi </heading> 
    <NewSection> 
     <section> 
      <InteractionSection> 
       <sectionTitle>Section Title</sectionTitle> 
       <label> Hello </label> 
       <heading>Hi </heading> 
       <para> 
        ... 
        ... 
       </para> 
      </InteractionSection> 
     <section> 
    </NewSection> 
</OldSection> 

Я хочу, чтобы удалить метки, которая заканчивается с секцией <OldSection>, </OldSection> ,<NewSection></NewSection>, <InteractionSection>, </InteractionSection> и т.д. т.е. одна Тег должен быть удален, а не содержимое с в теге.

Я попытался следующий код, но не работает ..

stringformat sf = new stringformat(); 

// REturns the xml string given as input 
String s = sf.getString(); 
String f = s; 

f = f.replaceAll("\\<*Section[^>].*?\\>", ""); 

Пожалуйста, любые предложения.

+5

Используйте SAX. Не пытайтесь использовать регулярные выражения для сжатия XML. –

+0

Yuo может использовать также библиотеку XPAth, запускать xml и искать узлы, которые вы хотите удалить. Могу ли я передать вам и пример, позвольте мне искать. – ZaoTaoBao

+0

попробуйте это '\\ <.*Section>' –

ответ

1

Не пытайтесь играть со строками, используя регулярное выражение. Я бы предположил, что вы делаете маршаллинг и демонтаж. Unmarshall ваш XML в класс. Скопируйте требуемое содержимое класса в другой класс, используя BeanUtils Apache Commons, а затем снова настройте его обратно в XML.

Смежные вопросы