正则表达式取代"用"只有当它不在另一个"

时间:2015-06-14 07:08:19

标签: c# regex xml

我将an encoded XML document转换为原始格式

string myXml = oldXml.Replace("&lt;", "<").Replace("&amp;", "&")
                                                   .Replace("&gt;", ">")
                                                   .Replace("&quot;", "\"")
                                                   .Replace("&apos;", "'");

工作正常。但是,我想将&quot;排除在另一个&quot;

之外

示例:

原始XML

//Note the title value
<v:shape id="_x0000_i1025" title="a&quot; title &quot;b"> </v:shape>

编码XML

&lt;v:shape id=&quot;_x0000_i1025&quot; title=&quot;a&quot; title &quot;b&quot;&gt; &lt;/v:shape&gt;

替换后恢复的

//Note the title value
<v:shape id="_x0000_i1025" title="a" title "b"> </v:shape>

正如您所见,内部&quot;不应转换为"。那么如何才能使用正则表达式进行替换,以便它不会替换内部&quot;

谢谢

1 个答案:

答案 0 :(得分:0)

原来我不需要恢复编码的XML

由于nodElement.SetAttribute("myXmlAttribute", myXml);首先对原始Xml进行编码,因此当我读取属性值并将其分配给字符串时,C#将自动恢复原始Xml。

string content = theNode.Attributes["myXmlAttribute"].Value;

我不需要做任何替换。