Union(并集)
为了获取两个节点,需要使用并集运算符- |
例如,下一个查询将返回两种类型的节点- comp_div
和sty_ret_type
:
/meadinkent/record/comp_div | /meadinkent/record/sty_ret_type
按子节点值筛选
为了根据其子节点的值筛选节点,您需要将所有条件放在同一括号中[nodeA='value1' and nodeB='value2']
例如,下一个查询将返回其子节点与过滤器匹配的记录节点:
/meadinkent/record[comp_div='MENSWEAR' and sty_ret_type='ACCESSORIES']
一个C#联合体示例:
[Test]
public void UnionExample()
{
string xml =
@"<meadinkent>
<record>
<comp_div>MENSWEAR</comp_div>
<sty_ret_type>ACCESSORIES</sty_ret_type>
<sty_pdt_type>BELTS</sty_pdt_type>
<pdt_category>AWESOME_BELTS</pdt_category>
</record>
</meadinkent>";
XDocument xDocument = XDocument.Parse(xml);
IEnumerable<XElement> selectedElements =
xDocument.XPathSelectElements(
"/meadinkent/record/comp_div | /meadinkent/record/sty_ret_type");
Assert.That(selectedElements.Count(), Is.EqualTo(2));
}
一个关于使用子节点过滤的C#示例:
[Test]
public void FilterExample()
{
string xml =
@"<meadinkent>
<record>
<comp_div>MENSWEAR</comp_div>
<sty_ret_type>ACCESSORIES</sty_ret_type>
<sty_pdt_type>BELTS</sty_pdt_type>
<pdt_category>AWESOME_BELTS</pdt_category>
</record>
</meadinkent>";
XDocument xDocument = XDocument.Parse(xml);
IEnumerable<XElement> selectedElements =
xDocument.XPathSelectElements(
"/meadinkent/record[comp_div='MENSWEAR' and sty_ret_type='ACCESSORIES']");
Assert.That(selectedElements.Count(), Is.EqualTo(1));
Assert.That(selectedElements.First().Name.LocalName, Is.EqualTo("record"));
}