Как вырезать теги в теге PHP XML MYSQL GCIDE, оставляя текст

Пробовал выяснить способ превратить XML-файл gcide в структурированный дамп sql, и, хотя у меня был небольшой успех, кажется, что полученные результаты ограничены.

Мне нужно знать способ разделить теги внутри другого тега в XML-файле.

например.

<entry><def>some def <altname>hey</altname></def></entry>

удалите «altname», но сохраните значение для тега «def».

Или используя php для удаления дочерних узлов, сохраняя значение, доступное для родителя как строки.

Пробовал преобразовать родительский элемент в строку, но обнаружил, что дочерние узлы были удалены. Также использовался mysql load xml file, но имел те же проблемы со структурой.

используемые файлы GCIDE

http://rali.iro.umontreal.ca/GCIDE/new-entries.zip

если вы можете конвертировать файлы в sql dump, тогда это было бы высоко оценено.

Эти метки кода в целевом теге ():

 $str = "<entry><def>some def <altname>hey</altname></def></entry>"; $dom = new domDocument(); $dom -> loadXML($str); // use getElementsByTagName or use DOMXPath($dom) to find your tag which don't contain other tags $tags = $dom -> getElementsByTagName("def"); $contents = ""; for($i = 0; $tags -> length > $i; $i++){ $contents = $tags -> item($i) -> nodeValue; //content without tags $children = $tags -> item($i) -> childNodes; remove_children($tags -> item($i)); //recursively remove chiled nodes $tags -> item($i) -> appendChild($dom -> createTextNode($contents)); } //recursively remove chiled nodes function remove_children(&$node) { while ($node->firstChild) { while ($node->firstChild->firstChild) { remove_children($node->firstChild); } $node->removeChild($node->firstChild); } } echo $dom -> saveXML();