0
votes

Xpath Pour obtenir un nœud parent où deux attributs d'un sous-nœud ont une valeur particulière

Compte tenu de cet ensemble de données à: https: // dd. météo.gc.ca/observations/xml/on/today/today_on_20200129_f.xml

Je pense que je suis ne pas traiter des espaces de noms correctement strong> mais je ne suis pas sûr quoi faire ici.

Comment obtiendrais-je l'OM: membre de membre où OM: membre / OM: Observation / OM: métadonnées / SET / IDENTIFICATION-ELEMENTS / ELEMENT / NOM = WMO_STATION_NUMBER ET SON VALUE EST, Par exemple 71704. / p>

J'ai ceci: p>

    xml.Load(url);
    var nsmgr = new XmlNamespaceManager(xml.NameTable);
    nsmgr.AddNamespace("om", "http://www.opengis.net/om/1.0");
    nsmgr.AddNamespace("", "http://dms.ec.gc.ca/schema/point-observation/2.1");        
    nsmgr.AddNamespace("gml", "http://www.opengis.net/gml");
    nsmgr.AddNamespace("xlink", "http://www.w3.org/1999/xlink");
    nsmgr.AddNamespace("xsi", "http://www.w3.org/2001/XMLSchema-instance");
    nsmgr.PushScope();

    //  "Observation//element[@name='{identifier}']";
    var tmp = xml.SelectSingleNode("//om:member/om:Observation/om:metadata", nsmgr);


0 commentaires

3 Réponses :


0
votes

Voici le XPath qui devrait renvoyer le nœud. XXX

 Entrez la description de l'image ici


4 commentaires

Merci pour votre réponse .. Pour une raison quelconque, cela ne fonctionne pas pour moi. Je veux dire que ça a l'air bien. Je joue avec ceux comme ça, il semblerai dès que j'introduit un nom d'élément qui n'a aucun préfixe qu'il renvoie null. Je pense que mon problème a quelque chose à voir avec le gestionnaire d'espaces de noms.


I Introduisez un nom d'élément qui n'a pas de préfixe qu'il renvoie NULL vous voulez dire sans @ pour nom Attribut?


Je penserais que cela me donnerait des données: // om: membre / OM: Observation / OM: Metadata / Set mais ce que je reçois est null. L'élément défini n'a pas de préfixe.


C'est bizarre. Je vois les données lorsque vous avez essayé votre // om: membre / om: Observation / OM: métadonnées / SET XPATH dans le Testeur XPath



1
votes

Voici un moyen d'utiliser system.xml.linq xxx


2 commentaires

Merci. Je vais l'utiliser et monter jusqu'à ce que cela me donne les données que je veux. Je veux toujours savoir ce qui n'allait pas avec ce que je faisais mais c'est plus gentil de toute façon.


@ carny666 J'ai fait une mise à jour qui allonge le code mais devrait améliorer les performances, car l'utilisation de .descendants (), donc tôt vérifierait de nombreux nœuds que nécessaire. J'ai bien peur que je ne connaisse pas comment le faire en utilisant xmldocument



0
votes

Peut-être que vous pouvez essayer: xxx


0 commentaires