как изменить формат тега xml, например <xml></xml>, на <xml /> - PullRequest
1 голос
/ 03 января 2012

У меня есть XML-файл.Согласно моему требованию, мне нужно обновить пустой тег, чтобы мне нужно было изменить <xml></xml> to <xml/>.Можно ли так поменять теги ..

Спасибо ...

Ответы [ 2 ]

3 голосов
/ 03 января 2012
var xmlString="<xml></xml> <toto></toto>";
var properString=System.Text.RegularExpressions.Regex.Replace(xmlString, "<([^>]+)></[^>]+>", "<$1/>");

РЕДАКТИРОВАТЬ: объяснение!

@ Нил Найт уже предоставил в комментарии ссылку на Википедию , объясняющую концепцию регулярных выражений.Часть, специфичная для .NET, доступна здесь: Регулярные выражения .NET Framework

Начальный тег XML можно сопоставить со следующим регулярным выражением: <[^>]+>.Часть [^>]+ может быть прочитана как: все символы, которые не являются ">", по крайней мере с одним символом (поэтому <> не соответствует, но <a> есть).Конечный тег XML можно сопоставить с таким же выражением: </[^>]+> (обратите внимание на косую черту после первого символа).Поэтому регулярное выражение <[^>]+></[^>]+> соответствует пустым тегам, таким как <foo></foo> (но будьте осторожны, оно также соответствует <foo></bar>, который не является допустимым кодом XML).

Теперь нам нужно выделить символы между«<» и «>».Для этого мы используем круглые скобки: <([^>]+)>.Это указывает механизму регулярных выражений захватывать совпадающие символы.Каждая группа круглых скобок может позже указываться в операции замены строкой «$ x» (где «x» - это число: «$ 1» для первой совпадающей скобки, «$ 2» для второй и т. Д.).

Таким образом, при вызове Regex.Replace(xmlString, "<([^>]+)></[^>]+>", "<$1/>"), <foo></foo> будет заменен на <foo/> (символы «foo» захватываются, а «$ 1» заменяется ими).<foo></bar> также будет заменено на <foo/>.

Я надеюсь, что этого объяснения достаточно для @Felix K.; o)
(мой английский не очень хорош, поэтому я не предоставилмного деталей)

2 голосов
/ 03 января 2012
if (someElement.innerText == string.Empty) 
{ 
    someElement.innerText = null; 
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...