Unión
Con el fin de obtener los dos nodos es necesario utilizar operador de unión - |
Por ejemplo, la siguiente consulta devolverá ambos tipos de nodos - comp_div
y sty_ret_type
:
/meadinkent/record/comp_div | /meadinkent/record/sty_ret_type
Fi filtro de sub-nodos valora
Para filtrar nodo basado en sus sub-nodos valores se han de fijar todas las condiciones en las mismas soportes [nodeA='value1' and nodeB='value2']
Por ejemplo, la siguiente consulta devolverá los nodos de registro cuyo nodos sub coincidir con el filtro:
/meadinkent/record[comp_div='MENSWEAR' and sty_ret_type='ACCESSORIES']
AC ejemplo # unión:
[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# filtro por subnodos ejemplo:
[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"));
}
Lo sentimos, no he sido claro. Lo que busco es una referencia al nodo Record que coincide con todos los valores de los elementos en el interior. Entonces, si quiero afirmar que sty_pdt_type es "BELTS" y pdt_category es "AWESOMEBELTS", quiero una referencia a todos los nodos de registro para los cuales esos elementos coinciden con esos valores. –
@Matt Thrower, entiendo ahora lo que querías decir :) Respuesta actualizada en consecuencia. – Elisha
Impresionante, gracias! –