Regex 正则表达式XML
我想更改在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> <
<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();