XML 转 String 的一种方法 Java - 修改 0 次

如果我想获得一个节点内的所有内容,比如下面的 XML 文件:

<?xml version='1.0'?>
<type>
  <human>                     
    <Name>John Smith</Name>              
    <Address>1/3A South Garden</Address>    
  </human>
</type>

假如我想把 <huaman> 内的所有内容都转换成字符串:

"<human><Name>John Smith</Name><Address>1/3A South Garden</Address></human>"

就可以使用下面的方法:

private String nodeToString(Node node) {
  StringWriter sw = new StringWriter();
  try {
    Transformer t = TransformerFactory.newInstance().newTransformer();
    t.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
    t.transform(new DOMSource(node), new StreamResult(sw));
  } catch (TransformerException te) {
    System.out.println("nodeToString Transformer Exception");
  }
  return sw.toString();
}

如果您不想字符串包含节点本身,可以使用字符串的截取方法 substring() ;

原地址:java - Geting all content of a xml node as string

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以使用Java中的相关库来将微信支付返回的参数xml换为String。其中,可以使用Java中自带的JAXB库,或者第三方库,如Jackson、Dom4j等。 以下是使用Dom4j库将微信支付返回的参数xml换为String的示例代码: ```java import java.io.StringWriter; import org.dom4j.Document; import org.dom4j.io.OutputFormat; import org.dom4j.io.SAXReader; import org.dom4j.io.XMLWriter; public class XmlToString { public static String xmlToString(String xml) throws Exception { SAXReader reader = new SAXReader(); Document document = reader.read(new ByteArrayInputStream(xml.getBytes("UTF-8"))); StringWriter stringWriter = new StringWriter(); OutputFormat format = OutputFormat.createPrettyPrint(); XMLWriter writer = new XMLWriter(stringWriter, format); writer.write(document); writer.close(); return stringWriter.toString(); } } ``` 以上代码中,使用SAXReader类将xml解析为Document对象,然后使用XMLWriter类将Document对象换为String。输出的String是格式化后的,如果不需要格式化,可以使用OutputFormat.createCompactFormat()。 这是一个使用Dom4j库的简单示例,也可以使用其他库来实现相同的功能。 ### 回答2: 在Java中将微信支付返回的参数xml换为string,您可以使用DOM解析器来实现。下面是一个示例代码: ```java import org.w3c.dom.Document; import org.xml.sax.InputSource; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import java.io.StringReader; public class XmlToString { public static String convertXmlToString(String xml) { try { DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = factory.newDocumentBuilder(); InputSource inputSource = new InputSource(new StringReader(xml)); Document doc = builder.parse(inputSource); doc.getDocumentElement().normalize(); return doc.getDocumentElement().getTextContent(); } catch (Exception e) { e.printStackTrace(); return ""; } } public static void main(String[] args) { String xml = "<xml><return_code>SUCCESS</return_code><return_msg>OK</return_msg></xml>"; String result = convertXmlToString(xml); System.out.println(result); } } ``` 上述代码中,我们首先创建了一个`DocumentBuilderFactory`和`DocumentBuilder`对象。然后,将传入的xml字符串换为`InputSource`对象,并使用`DocumentBuilder`解析该对象。接下来,调用`normalize()`方法xml归一化处理,以便获取标签内容。最后,使用`getTextContent()`方法获取标签内容,并将其返回作为字符串。 在`main`方法中,我们提供了一个xml字符串,并调用`convertXmlToString`方法进行换。最后,将结果打印出来。 请注意,上述代码只是示例,您可以根据实际需要进行修改和适配。 ### 回答3: 在Java中将微信支付返回的参数XML换为String的方式有多种方法,其中一种常用的方法是使用JavaXML解析库进行解析。 首先,我们可以使用Java的内置库`javax.xml.parsers.DocumentBuilderFactory`和`javax.xml.parsers.DocumentBuilder`来解析XML。具体步骤如下: 1. 创建一个`DocumentBuilderFactory`对象,并通过`newInstance()`方法获取实例。 2. 创建一个`DocumentBuilder`对象,并通过`newDocumentBuilder()`方法获取实例。 3. 使用`DocumentBuilder`对象的`parse()`方法XML字符串解析为一个`Document`对象。 4. 通过`Document`对象的`getElementsByTagName()`方法获取指定标签名的节点列表。 5. 遍历节点列表,使用`getTextContent()`方法获取每个节点的文本内容,并将其拼接为一个完整的字符串。 以下是一个示例代码: ```java import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.DocumentBuilder; import org.w3c.dom.Document; import org.w3c.dom.Node; import org.w3c.dom.NodeList; import java.io.ByteArrayInputStream; public class XmlToString { public static void main(String[] args) { String xml = "<xml><return_code><![CDATA[SUCCESS]]></return_code><return_msg><![CDATA[OK]]></return_msg><appid><![CDATA[wx1234567890]]></appid></xml>"; try { DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = factory.newDocumentBuilder(); Document doc = builder.parse(new ByteArrayInputStream(xml.getBytes("UTF-8"))); NodeList nodeList = doc.getElementsByTagName("*"); StringBuilder sb = new StringBuilder(); for (int i = 0; i < nodeList.getLength(); i++) { Node node = nodeList.item(i); sb.append(node.getNodeName()).append(":").append(node.getTextContent()).append("\n"); } String result = sb.toString(); System.out.println(result); } catch (Exception e) { e.printStackTrace(); } } } ``` 上述代码将会输出换后的字符串: ``` xml:SUCCESS return_code:SUCCESS return_msg:OK appid:wx1234567890 ``` 通过以上步骤,我们可以将微信支付返回的参数XML成功换为一个String对象。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值