javascript - 将 XML 字符串转换为 org.w3c.dom.Document?

标签 javascript java xml

我有以下 XML 字符串,我想将此字符串转换为 org.w3c.dom.Document,以便获取“CallPaySecureResult”元素的值。

<?xml version="1.0" encoding="UTF-8"?>
<S:Body xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
   <ns2:CallPaySecureResponse xmlns:ns2="https://paysecure/merchant.soap/">
      <CallPaySecureResult>&amp;lt;status&amp;gt;success&amp;lt;/status&amp;gt;&amp;lt;errorcode&amp;gt;0&amp;lt;/errorcode&amp;gt;&amp;lt;errormsg /&amp;gt;&amp;lt;guid&amp;gt;d785f819-6fc1-1c68-8edf-bbb65cba5412&amp;lt;/guid&amp;gt;&amp;lt;/paysecure&amp;gt;</CallPaySecureResult>
   </ns2:CallPaySecureResponse>
</S:Body>

我尝试过以下代码

public String processIssuerResultParameters(String strXML)throws Exception
    {

            DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();  
            DocumentBuilder builder; 
            Document doc=null;
            String CallPaySecureResult ="";
            try  
            {  
                builder = factory.newDocumentBuilder();  
                doc = builder.parse( new InputSource( new StringReader( strXML ) ) ); 
             logger.severe(doc.getTextContent());
            } catch (Exception e) {  
                return "1:"+e.toString()+doc.getTextContent();  
            } 
   }

我已经尝试过这个:

InputSource is= new InputSource(new StringReader(strXML));
            DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
            factory.setNamespaceAware(true);
            builder = null;
            builder = factory.newDocumentBuilder();
            doc = builder.parse(is);

还有这个:

Source source = new StreamSource(new StringReader(strXML));
            DOMResult result = new DOMResult();
            TransformerFactory.newInstance().newTransformer().transform(source , result);
            doc = (Document) result.getNode();

但在所有情况下变量“doc”均为空。

如何将 XML(字符串)解析为文档并获取 <CallPaySecureResult> 中的值?

最佳答案

这里有一些示例+上下文。

您应该查看整个文件: https://github.com/bcdev/ceres/blob/master/ceres-metadata/src/main/java/com/bc/ceres/metadata/XPathHandler.java#L76

private static Document transformToDocument(Object document) {
    try {
        String docString;
        if (document instanceof ReaderResource) {
            docString = ((ReaderResource) document).getContent();
        } else if (document instanceof String) {
            docString = (String) document;
        } else if (document instanceof Element) { //used?
            DOMSource domSource = new DOMSource((Element) document);
            StringWriter writer = new StringWriter();
            StreamResult result = new StreamResult(writer);
            TransformerFactory tf = TransformerFactory.newInstance();
            Transformer transformer = tf.newTransformer();
            Properties properties = new Properties();
            properties.setProperty(OutputKeys.METHOD, "xml");
            properties.setProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
            transformer.setOutputProperties(properties);
            transformer.transform(domSource, result);
            docString = writer.toString();
        } else {
            return null;
        }

        InputStream is = new ByteArrayInputStream(docString.getBytes());
        return DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(is);
    } catch (Exception e) {
        throw new RuntimeException(e);
    }
}

关于javascript - 将 XML 字符串转换为 org.w3c.dom.Document?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35889416/

相关文章:

javascript - 如何重复数组中的不同元素?

javascript - 如果是逗号,则从字符串中删除第一个字符

java - 按值获取数据

javascript - CSS Textsize 基于容器宽度?

java - 如何在tomcat的catalina.out中使用Spring MVC获取错误消息

java - Java 中的类转换异常

xml - 使用 XSLT 检查 XML 节点名称是否包含字母

java - Eclipse Luna 保存 xml 文件需要很长时间 :(

xmlstarlet 解析器错误 : Entity '*' not defined

javascript - 如何分别为所有循环图像启用 ImageView