以下のコードで正規表現を使用して見つかったすべての一致を書き出そうとしています:
var source = "<Content><link><a xlink:href=\"tcm:363-48948\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">Read more</a></link><links xlink:href=\"tcm:362-65596\" xmlns:xlink=\"http://www.w3.org/1999/xlink\"/></Content>";
var tridionHref = new Regex("tcm:([^\"]*)");
var elem = XElement.Parse(source);
XNamespace xlink = "http://www.w3.org/1999/xlink";
if (tridionHref.IsMatch(elem.ToString()))
{
foreach (var Id in elem.Elements().Where(x => x.Attribute(xlink + "href") != null))
{
Console.WriteLine(Id.Attribute(xlink + "href").Value); //For testing
Id.Attribute(xlink + "href").Value = Id.Attribute(xlink + "href").Value.Replace("value1", "value2"); //Just to show you an example
}
}
私のコンソールウィンドウは出力しますが、出力tcm:362-65596
しませんtcm:363-48948
。コードがタグxlink:href
内の値を属性として認識していないように見えますか? <a>
誰かが私を正しい方向に向けることができますか? のすべてのインスタンスに一致する必要がありますtcm:([^\"]*)
。