简体   繁体   English

如何从具有名称空间但在Java中没有前缀的XML获取值?

[英]How to get a value from a XML with namespace but without prefix in Java?

well, this is the xml: 好吧,这是xml:

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>
<FECompUltimoAutorizadoResponse xmlns="http://ar.gov.afip.dif.FEV1/">
<FECompUltimoAutorizadoResult>
<PtoVta>12</PtoVta>
<CbteTipo>1</CbteTipo>
<CbteNro>1</CbteNro>
</FECompUltimoAutorizadoResult>
</FECompUltimoAutorizadoResponse>
</soap:Body>
</soap:Envelope>

I Want to get CbteNro, but I cant because the FECompUltimoAutorizadoResponse, I tried with this: 我想获取CbteNro,但是由于FECompUltimoAutorizadoResponse而无法进行,我尝试使用以下方法:

Document document = new Builder().build(responseString, "test.xml");
    Nodes nodes = document.query("/soap:Envelope[@xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\"]/soap:Body/FECompUltimoAutorizadoResponse[@xmlns=\"http://ar.gov.afip.dif.FEV1/\"]/FECompUltimoAutorizadoResult/CbteNro\n");
    System.out.println(nodes.get(0).getValue());

usin XOM, but it doesn't work, I receive this message: 在XOM中使用,但不起作用,我收到此消息:

Exception in thread "main" nu.xom.XPathException: XPath error: XPath expression uses unbound namespace prefix soap 线程“ main”中的异常nu.xom.XPathException:XPath错误:XPath表达式使用未绑定的名称空间前缀肥皂

thanks! 谢谢!

Thanks to har07, it can be solved like this: 感谢har07,它可以像这样解决:

Document document = new Builder().build(responseString, "test.xml");
Element rootElem = document.getRootElement();
XPathContext xc = XPathContext.makeNamespaceContext(rootElem);
xc.addNamespace("fev1", "http://ar.gov.afip.dif.FEV1/");
Nodes matchedNodes = rootElem.query("/soap:Envelope/soap:Body/fev1:FECompUltimoAutorizadoResponse/fev1:FECompUltimoAutorizadoResult/fev1:CbteNro", xc);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM