したがって、私が最終的にやろうとしているのは、XMLを解析し、cdataセクション内に含まれる要素に要素値を追加することです。xml内のcdataセクションを検索し、それを引き出して別のxdocumentにロードし、xml構造を維持してから、要素値を追加しますが、元のxmlに戻す方法がわかりません。元の位置。
これが元のXMlです。
<OUTPUT version="2.0"><RESPONSE><DATA state="FL" city="Sarasota">
<![CDATA[<LION xmlns="http://www.com" version="5.050">
<COMMENTS>
<PLACES>
Forest under a tree
</PLACES></COMMENTS></LION>]]>
</DATA></RESPONSE></OUTPUT>
cdataセクションを検索し、次のような要素値を挿入します。
XDocument value = XDocument.Parse(returnValue);
RegexOptions options = RegexOptions.None;
Regex regex = new Regex(@"\<\!\[CDATA\[(?<text>[^\]]*)\]\]\>", options);
bool isMatch = regex.IsMatch(returnValue);
if(isMatch)
{
Match match = regex.Match(returnValue);
string HTMLtext = match.Groups["text"].Value;
XDocument cdata = XDocument.Parse(HTMLtext);
XNamespace ns = @"http://www";
var com = cdata.Descendants(ns + "COMMENTS").First();
var dcomm = com.Element(ns + "PLACES");
dcomm.Value = "test"+ dcomm.Value;
私が残したのは、正規表現を文字列に変換して削除されたため、cdataテキストに追加し直してから、元のxmlのcdataの位置に戻すことです。