Объединение
Чтобы получить оба узла, необходимо использовать оператор объединения - |
Например, следующий запрос вернет оба типа узлов - 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']
Пример объединения AC #:
[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));
}
Пример фильтра AC # по подузлам:
[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"));
}