Regex 正则表达式XML

Regex 正则表达式XML,regex,xml,oracle,Regex,Xml,Oracle,我想更改在XML文件中写入空节点的格式 <products> <product> <id class="123"/> <title><font>TITLE</font><size/></title> <name/> <category> <id/> </category> <

我想更改在XML文件中写入空节点的格式

<products>
   <product>
     <id class="123"/>
     <title><font>TITLE</font><size/></title>
     <name/>
     <category>
       <id/>
     </category>
   </product>
</products>

标题
我想得到:

<products>
   <product>
     <id class="123"></id>
     <title><font>TITLE</font><size></size></title>
     <name></name>
     <category>
       <id></id>
     </category>
   </product>
</products>

标题
阅读后,我创建了这个C代码:

var source=XElement.Parse(@)
标题
");
foreach(source.degenantNodes()中的var节点)
.Where(e=>e.NodeType==XmlNodeType.Element)
.Where(e=>!((XElement)e).HasElements)
{
XElement elt=(XElement)节点;
if(string.IsNullOrEmpty(elt.Value))
{
elt.Value=string.Empty;
}
}
string sourceWithExplicitCloseTags=source.ToString();
它生成以下XML:


标题

含义应该相同。你有什么特别的理由吗?你尝试过什么吗?是的,我有一个原因,PrestaShop中的API不理解,它只理解这个答案是否有帮助:?这并不能解决问题,因为我已经准备好了一个XML文件,我不创建这个文件。好的,我会检查我是否可以在ORACLE中执行它(因为我必须在ORACLE中使用ORACLE函数来执行XML;)@TomaszTomzik,这将是添加到您的问题中的重要信息。我添加了一个标记,所以我建议用“正则表达式”解决这个问题。不幸的是,我不能用oracle(或者我不知道如何)生成空标记
var source = XElement.Parse(@"<products>
   <product>
     <id class=""123""/>
     <title><font>TITLE</font><size/></title>
     <name/>
     <category>
       <id/>
     </category>
   </product>
</products>");

foreach (var node in source.DescendantNodes()
    .Where(e => e.NodeType == XmlNodeType.Element)
    .Where(e => !((XElement)e).HasElements))
{
    XElement elt = (XElement)node;
    if (string.IsNullOrEmpty(elt.Value))
    {
        elt.Value = string.Empty;
    }
}

string sourceWithExplicitCloseTags = source.ToString();