Come faccio a selezionare qualcosa con uno spazio dei nomi in bianco con Jaxen?

StackOverflow https://stackoverflow.com/questions/2159403

  •  23-09-2019
  •  | 
  •  

Domanda

Ho il seguente codice XML:

<config xmlns="http://www.someurl.com">
  <product>
    <brand>
      <content />
    </brand>
  </product>
</config>

lo sto leggendo bene in JDOM.

Tuttavia, quando cerco di usare Jaxen per afferrare il contenuto, non posso sembrare ottenere nulla.

Ecco un esempio di ciò che non sembra funzionare:

XPath xpath = new JDOMXPath("config");

SimpleNamespaceContext namespaceContext = new SimpleNamespaceContext();
namespaceContext.addNamespace("", "http://www.someurl.com");

xpath.setNamespaceContext(namespaceContext);

assert xpath.selectNodes(document).size() > 0 : "should find more than 0";

Questa affermazione non riesce sempre.

Che cosa sto facendo di sbagliato?

È stato utile?

Soluzione

È necessario assegnare un prefisso. Fare quella chiamata addNamespace ( "hopfrog", "http: // ..."); Poi fare il XPath ( "hopfrog: config");

Tenete a mente che i prefissi in XML non fanno parte del modello di dati reali. Il modello di dati reali assegna un URL, eventualmente vuoto, ad ogni elemento e attributo. È possibile utilizzare qualsiasi prefisso che si desidera in XPath fintanto che è destinato a l'URL destra. Dal momento che l'URL che si desidera in bianco, si associa un prefisso al 'vuoto'.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top