it-swarm.dev

Jak vybrat více uzlů v různých úrovních?

S tímto (zjednodušeným) XML:

<?xml version="1.0" encoding="UTF-8"?>
<kml>
<Document>
        <Placemark>
            <name>Poly 1</name>
            <Polygon>
                        <coordinates>
                            -58.40844625779582,-34.60295278618136,0
                        </coordinates>
            </Polygon>
        </Placemark>
        <Placemark>
            <name>Poly 2</name>
            <Polygon>
                        <coordinates>
                            -58.40414334150432,-34.59992445476809,0
                        </coordinates>
            </Polygon>
        </Placemark>
</Document>
</kml>

Jak mohu vybrat název a souřadnice každé značky místa? Právě teď mohu vybrat jejich jméno s následujícím výrazem XPath:

//Document//Placemark//name

Jak mohu vybrat oba bez dalších dat?

Svazek můžete použít ve výrazu XPath. Stačí použít operátor: |

//Document/Placemark/name | //Document/Placemark/Polygon/coordinates

Nepoužívejte // ( sestupně osa), pokud to nepotřebujete. Použití // by také fungovalo: //name | //coordinates. Je lepší určit přesnou cestu.

38
toniedzwiedz

Použití :

/*/*/Placemark/name | /*/*/Placemark/*/coordinates

Toto specifikuje odbor výsledků dvou oddělených XPath výrazů - standardní XPath odborový operátor | je používán. Vybrané jsou všechny name elementy, které jsou dětmi elementu Placemark, který je vnukem horního elementu XML dokumentu, plus all coordinates elementy, které jsou velkými dětmi elementu Placemark, který je vnukem prvkem XML dokumentu.

Vybrané prvky přicházejí v pořadí dokumentů (ačkoli žádný normativní dokument W3C nestanoví pořadí), což znamená, že ve výsledku vyhodnocení (obvykle typu XmlNodeList) je za každým prvkem name přímo následován odpovídající prvek coordinates.

5

Vyřešeno: // Značka místa/* [vlastní :: jméno nebo potomek :: souřadnice]

0
luis long