xpathPurchase não é um element, é?
ora que ele chega
Element purchase = (Element) xpathPurchase.selectNodes("//TVodPurchase[@id=’"+id+"’]");
gera essa exceção
então pode ser o elemento, é que o id é o mesmo valor do elemento
mais eu tirei
ai fico assim
new Dom4jXPath("//vodusage:TVodPurchase);
Cara, é por aí. Sem o XML de base, fica difícil de rodar/testar. Não dá para ficar chutando no vazio.
Você usa ou xpath.selectNodes(doc) ou doc.selectNodes("//xyz");
O resto vai ser em volta disso.
entendii…,… eu axo que pode ser a sintaxe errada porque eu coloquei um valor real
Element purchase = (Element) doc.selectNodes("//TVodPurchase[@id=‘4504a142-d39c-4af4-8314-62b90feac165’]");
e mesmo assim deu o mesmo erro [@id=‘valor’]
é assim mesmo
org.jaxen.XPath xpathPurchase = new Dom4jXPath("//vodusage:ReferencedEntitlement[@id='5eb81fd1-985a-4a18-85c1-fc8c0c4dd989']");
xpathPurchase.setNamespaceContext(new SimpleNamespaceContext(map));
System.out.println(xpathPurchase.selectNodes(doc));
Funciona.
mano la dentro quando eu passo da vai nem com reza rsrs
Map<String, String> map = new HashMap<String, String>();
map.put("vodusage", "urn:eventis:vodusage:2.0");
org.jaxen.XPath xpathCustomer = new Dom4jXPath(
"//vodusage:ReferencedEntitlement/vodusage:CustomerId");
xpathCustomer.setNamespaceContext(new SimpleNamespaceContext(map));
Map<String, String> mapPurchase = new HashMap<String, String>();
mapPurchase .put("vodusage", "urn:eventis:vodusage:2.0");
org.jaxen.XPath xpathPurchase = new Dom4jXPath("//vodusage:TVodPurchase/vodusage:EntitlementId");
xpathPurchase.setNamespaceContext(new SimpleNamespaceContext(mapPurchase));
List<Element> nodesCustomer = xpathCustomer.selectNodes(doc);
List<Element> nodesPurchase = xpathPurchase.selectNodes(doc);
for (Element noh : nodesCustomer) {
String texto = noh.getTextTrim();
if (texto != null && texto.endsWith("038")) {
Element pai = noh.getParent();
String id = pai.valueOf("@id");
noh.getParent().detach();
for (Element purchase : nodesPurchase ) {
String idPurchase = purchase.getTextTrim();
if (id != null && id.equals(idPurchase))
purchase.getParent().detach();
}
}
}
ai fiz assim e funciono eu acho rsrs
Por enquanto deu certo rsrs qualquer coisa do um alo aqui kkkkkkk zueraa rsrs
Cara o seguinte, muito obrigado valew mesmo…ajudo muitoooo
Comunidade do Guj mtu boaa pra resolver as coisa.
Abração
rsrs era obvio que não ia dar tudo certo rsrs o original é assim
<?xml version="1.0"> ele gera <?xml version="1.0" encoding="UTF-8"?>ai zua todo os acentos
Consegui, era o enconding da String , mudei o enconding do eclipse ,e tudo deu certo.,…
Obrigado
ainda o enconding… quando exporto o jar, não funciona
O que não funciona? Você tá testando o quê contra o quê?
Você pode controlar o encoding de entrada e saída do seu *putStream. Também pode depender do leitor que você está abrindo o XML.
RESOLVI fazendo a transformação antes de gravar
private void gravar(byte[] bytes, String caminhoDestino) throws Exception {
ByteArrayInputStream bstrean = new ByteArrayInputStream(bytes);
Reader input = new InputStreamReader(bstrean, decoder("Cp1252"));
Writer output = new OutputStreamWriter(new FileOutputStream(
caminhoDestino), encoder("UTF-8"));
char[] buffer = new char[4096];
int length;
while ((length = input.read(buffer)) != -1) {
output.write(buffer, 0, length);
}
output.flush();
output.close();
}
private static CharsetDecoder decoder(String encoding) {
return Charset.forName(encoding).newDecoder()
.onMalformedInput(CodingErrorAction.REPORT)
.onUnmappableCharacter(CodingErrorAction.REPORT);
}
private static CharsetEncoder encoder(String encoding) {
return Charset.forName(encoding).newEncoder()
.onMalformedInput(CodingErrorAction.REPORT)
.onUnmappableCharacter(CodingErrorAction.REPORT);
}