我有 xml 包含带有逗号分隔值的属性。我知道这不是一个好主意,但现在坚持下去。
我喜欢使用 XPath 选择具有匹配属性值的元素。我希望匹配只考虑完整值,而不是部分匹配。可以用 XPath 做到这一点吗?
例如,请参见下面的 C# 代码。我使用.NET 4.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']
在这个例子中可以工作。