有没有办法选择性地用其他XElement替换XElement内容?用XElement替换XElement内容
我有这样的XML:
<prompt>
There is something I want to tell you.[pause=3]
You are my favorite caller today.[pause=1]
Have a great day!
</prompt>
我想呈现为这样:
<prompt>
There is something I want to tell you.<break time="3s"/>
You are my favorite caller today.<break time="1s"/>
Have a great day!
</prompt>
我需要更换与实际XElements占位符,但是当我试图改变内容的XElement,.NET当然会逃避所有的尖括号。我明白为什么内容通常需要正确转义,但我需要绕过该行为并将XML直接注入内容。
这是我的代码,否则工作。
MatchCollection matches = Regex.Matches(content, @"\[(\w+)=(\d+)]");
foreach (XElement element in voiceXmlDocument.Descendants("prompt"))
{
if (matches[0] == null)
continue;
element.Value = element.Value.Replace(matches[0].Value, @"<break time=""5s""/>");
}
这是一项正在进行的工作,所以不要太在意RegEx模式的有效性,因为我将在稍后处理以符合多个条件。这是概念代码的证明,重点在于如所描述的替换占位符。我只在这里包含了迭代和RegEx代码,以说明我需要能够对已经填充了内容的整个文档执行此操作。
有趣。我有同样的想法。 –
是的,你没有,亚历克斯,如果我没有那么固执,我会转移到别的东西,并检查回答。为了良好的业力,我将把你的回答标记为答案。 –