Java如何获取xml文件中子节点的属性

小灰灰 2022-06-09 08:56 509阅读 0赞
  1. import java.io.ByteArrayInputStream;
  2. import javax.xml.parsers.DocumentBuilder;
  3. import javax.xml.parsers.DocumentBuilderFactory;
  4. import org.w3c.dom.Document;
  5. import org.w3c.dom.Element;
  6. import org.w3c.dom.NodeList;
  7. import org.w3c.dom.Text;
  8. public class XmlNodeValue {
  9. public static String getStringFile(String xml) throws Exception {
  10. String downupload = "";
  11. String statusResult = ""; // 存放应答消息中<status>元素的result属性
  12. String statusText = ""; // 存放应答消息中<status>元素的text
  13. DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
  14. DocumentBuilder db = dbf.newDocumentBuilder();
  15. Document doc = db.parse(new ByteArrayInputStream(xml.getBytes()));
  16. // xml中元素的变量命名均以_符号起始.下同
  17. Element _message = doc.getDocumentElement();
  18. // 取二级元素content
  19. NodeList _contentList = _message.getElementsByTagName("content");
  20. if (_contentList.getLength() == 1) {
  21. Element _content = (Element) _contentList.item(0);
  22. // 取三级元素status
  23. NodeList _statusList = _content.getElementsByTagName("status");
  24. if (_statusList.getLength() == 1) {
  25. Element _status = (Element) _statusList.item(0);
  26. Text t = (Text) _status.getFirstChild();
  27. statusText = t.getNodeValue();
  28. statusResult = _status.getAttribute("result");
  29. }
  30. if (statusResult.equals("exception") || statusResult.equals("error")) {
  31. System.out.println(statusText);
  32. throw new Exception(statusText);
  33. } else if (statusResult.equals("normal")) {
  34. downupload = _content.getElementsByTagName("resultPath").item(0).getFirstChild().getNodeValue();
  35. //resultPath节点的value值
  36. System.out.println("resultPath节点的value值:" + downupload);
  37. }
  38. }
  39. return downupload;
  40. }
  41. public static void main(String[] args) throws Exception {
  42. String xml = "<?xml version=\"1.1\" encoding=\"gb2312\"?>"
  43. + "<message>"
  44. + "<function name=\"query\">query_bad_call_number_143_export</function>"
  45. + "<service>call</service>"
  46. + "<content>"
  47. + "<status result=\"normal\">被操作对象:全部号码,OK</status>"
  48. + "<resultPath>/home/abc/efd/datafile/file/doubtResult_143/doubt_result_143_20170901154904.xls</resultPath>"
  49. + "</content>"
  50. + "</message>";
  51. getStringFile(xml);
  52. }
  53. }

发表评论

表情:
评论列表 (有 0 条评论,509人围观)

还没有评论,来说两句吧...

相关阅读