カンマで区切られた値を持つ属性を含むxmlがあります。これは良い考えではないことは承知していますが、今のところはこれに固執しています。
XPathを使用して、属性値が一致する要素を選択するのが好きです。部分一致ではなく、完全な値のみを考慮して一致させたい。XPathでこれを行うことは可能ですか?
たとえば、以下のC#コードを参照してください。.NET4.0を使用しています。
string xml = @"<Foos>
<Foo Tag=""AA, BB"" />
<Foo Tag=""BB"" />
<Foo Tag=""AAA, BBB"" />
</Foos>";
using (StringReader reader = new StringReader(xml))
{
XElement doc = XElement.Load(reader);
// I like to select elements with tag BB:
// <Foo Tag=""AA, BB"" />
// <Foo Tag=""BB"" />
var fooElementsWithTagBB = doc.XPathSelectElements("//Foo[@Tag = 'BB']"); // Selects only <Foo Tag=""BB"" />
fooElementsWithTagBB = doc.XPathSelectElements("//Foo[contains(@Tag, 'BB')]"); // Selects all elements
}
一般的な質問をしたいのですが
Foo [@Tag ='AA、BB'または@Tag ='BB']
この例では機能します。