Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/358.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中不使用Xpath获取xml标记值_Java_Xml_Xpath - Fatal编程技术网

在Java中不使用Xpath获取xml标记值

在Java中不使用Xpath获取xml标记值,java,xml,xpath,Java,Xml,Xpath,我有一个XML对象,我正在转换为Doc,试图使用Xpath获取一个标记,它返回空白。请找到密码 <?xml version="1.0" encoding="UTF-8"?> <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> <soapenv:Body> <ns:BB_SDF_Response xmlns:ns="<url&

我有一个XML对象,我正在转换为Doc,试图使用Xpath获取一个标记,它返回空白。请找到密码

<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Body>
    <ns:BB_SDF_Response
        xmlns:ns="<url>">
        <ns:BBServiceResponse
            xmlns="<url>">
            <ns1:BBHeader
                xmlns:ns1="<url>">
                <ns1:rsHeader>
                    <ns1:status>
                        <ns1:overallStatus>E</ns1:overallStatus>
                        <ns1:bbMessages>
                            <ns1:formattedMessage>Location does not exist</ns1:formattedMessage>
                        </ns1:bbMessages>
                    </ns1:status>
                </ns1:rsHeader>
            </ns1:BBHeader>
        </ns:BBServiceResponse>
    </ns:BB_SDF_Response>
</soapenv:Body>
</soapenv:Envelope>

我想获取formattedMessage标记值

可能是您没有传递名称空间。我不是Java开发人员,但在C#中遇到了类似的问题。但是名称空间很重要?在.Net中,如果xml有名称空间,则xpath的值为空,除非代码中指定了名称空间。也许设置
dbf.setNamespaceAware(false)
可以忽略名称空间,但我不知道。看,这个问题可能是您没有传递名称空间。我不是Java开发人员,但在C#中遇到了类似的问题。但是名称空间很重要?在.Net中,如果xml有名称空间,则xpath的值为空,除非代码中指定了名称空间。也许设置
dbf.setNamespaceAware(false)
可以忽略名称空间,但我不知道。看到这个问题了吗
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); 
                        dbf.setNamespaceAware(true); 
DocumentBuilder docBuilder = dbf.newDocumentBuilder(); 
org.w3c.dom.Document doc = docBuilder.parse(new InputSource(new StringReader(soapResponse)));
XPathFactory factory = XPathFactory.newInstance();
XPath xpath = factory.newXPath();  
logger.info(xpath.evaluate("/Envelope/Body/BB_SDF_Response/BBServiceResponse/BBHeader/rsHeader/status/bbMessages/formattedMessage/",doc, XPathConstants.STRING));