Java 具有子元素的Xml解析器

Java 具有子元素的Xml解析器,java,xml-parsing,Java,Xml Parsing,我有以下xml格式,并希望阅读java中的元素。”我对xml解析非常陌生 <string xmlns="http://tempuri.org/"> <IDV><exshowroomPrice>48800</exshowroomPrice><idv_amount>46360</idv_amount><idv_amount_min>39406</idv_amount_min><idv_amount_

我有以下xml格式,并希望阅读java中的元素。”我对xml解析非常陌生

<string xmlns="http://tempuri.org/">
<IDV><exshowroomPrice>48800</exshowroomPrice><idv_amount>46360</idv_amount><idv_amount_min>39406</idv_amount_min><idv_amount_max>53314</idv_amount_max><exshowroomPrice_min>41480</exshowroomPrice_min><exshowroomPrice_max>56120</exshowroomPrice_max><outputmessage></outputmessage></IDV>
<string>
o/p:
488004636039406533144148056120

请帮忙,
提前谢谢。

我不确定是否理解您的问题,但您的XML格式不正确(应该以结尾)

也就是说,解析文档的代码是正确的,现在我认为提取单个元素的最简单方法是使用类XPathAPI

例如:

        Node node = XPathAPI.selectSingleNode(doc, "//string/IDV/exshowroomPrice");
        System.out.println(node.getTextContent());
更新:

实际上,XPathAPI不是标准,但您可以使用XPath:

        XPath xpath = XPathFactory.newInstance().newXPath();
        String val = (String) xpath.evaluate("//string/IDV/exshowroomPrice/text()", doc, XPathConstants.STRING);
        System.out.println(val);

终于得到了答案

try {

                                    DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
                                    DocumentBuilder db = dbf.newDocumentBuilder();
                                    InputSource is = new InputSource();
                                    is.setCharacterStream(new StringReader(responsebuffer.toString()));
                                    Document document = db.parse(is);
                                    document.getDocumentElement().normalize();
                                    //System.out.println(document.getDocumentElement().getTextContent());

                                    StringBuilder xmlStringBuilder = new StringBuilder();
                                    xmlStringBuilder.append("<?xml version=\"1.0\"?>");
                                    xmlStringBuilder.append(document.getDocumentElement().getTextContent());
                                    ByteArrayInputStream input = new ByteArrayInputStream(xmlStringBuilder.toString().getBytes("UTF-8"));
                                    Document doc = db.parse(input);

                                    NodeList nList = doc.getElementsByTagName("IDV");
                                    for (int temp = 0; temp < nList.getLength(); temp++) {
                                        Node nNode = nList.item(temp);
                                        if (nNode.getNodeType() == Node.ELEMENT_NODE) {
                                            Element eElement = (Element) nNode;


 System.out.println(eElement.getElementsByTagName("exshowroomPrice").item(0).getTextContent());
 System.out.println(eElement.getElementsByTagName("idv_amount").item(0).getTextContent());
  System.out.println(eElement.getElementsByTagName("idv_amount_min").item(0).getTextContent());
  System.out.println(eElement.getElementsByTagName("idv_amount_max").item(0).getTextContent());
 System.out.println(eElement.getElementsByTagName("exshowroomPrice_min").item(0).getTextContent());
 System.out.println(eElement.getElementsByTagName("exshowroomPrice_max").item(0).getTextContent());
 System.out.println(eElement.getElementsByTagName("outputmessage").item(0).getTextContent());




                                        }
                                    }

                                    //getElementsByTagName("exshowroomPrice")

                                } catch (Exception e) {
                                    e.printStackTrace();
                                }
试试看{
DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance();
DocumentBuilder db=dbf.newDocumentBuilder();
InputSource is=新的InputSource();
is.setCharacterStream(新的StringReader(responsebuffer.toString());
Document Document=db.parse(is);
document.getDocumentElement().normalize();
//System.out.println(document.getDocumentElement().getTextContent());
StringBuilder xmlStringBuilder=新的StringBuilder();
xmlStringBuilder.append(“”);
append(document.getDocumentElement().getTextContent());
ByteArrayInputStream输入=新的ByteArrayInputStream(xmlStringBuilder.toString().getBytes(“UTF-8”);
文档doc=db.parse(输入);
NodeList nList=doc.getElementsByTagName(“IDV”);
对于(int-temp=0;temp
使用DOM、JAXB和RegEx?有无数的java xml解析器。在发布这篇文章之前,你自己做过什么吗?@f1sh,是的,尝试了很多不同的过程。无法获得成功。@zeet因此,在您提供了一些代码之后,很明显您已经将xml内容解析为
文档
。这为你提供了一些方法。你在坚持什么?想得到字符串的每一个元素。但是没有得到正确的方法…@zeet哦,是的:最后一行应该是,不是
try {

                                    DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
                                    DocumentBuilder db = dbf.newDocumentBuilder();
                                    InputSource is = new InputSource();
                                    is.setCharacterStream(new StringReader(responsebuffer.toString()));
                                    Document document = db.parse(is);
                                    document.getDocumentElement().normalize();
                                    //System.out.println(document.getDocumentElement().getTextContent());

                                    StringBuilder xmlStringBuilder = new StringBuilder();
                                    xmlStringBuilder.append("<?xml version=\"1.0\"?>");
                                    xmlStringBuilder.append(document.getDocumentElement().getTextContent());
                                    ByteArrayInputStream input = new ByteArrayInputStream(xmlStringBuilder.toString().getBytes("UTF-8"));
                                    Document doc = db.parse(input);

                                    NodeList nList = doc.getElementsByTagName("IDV");
                                    for (int temp = 0; temp < nList.getLength(); temp++) {
                                        Node nNode = nList.item(temp);
                                        if (nNode.getNodeType() == Node.ELEMENT_NODE) {
                                            Element eElement = (Element) nNode;


 System.out.println(eElement.getElementsByTagName("exshowroomPrice").item(0).getTextContent());
 System.out.println(eElement.getElementsByTagName("idv_amount").item(0).getTextContent());
  System.out.println(eElement.getElementsByTagName("idv_amount_min").item(0).getTextContent());
  System.out.println(eElement.getElementsByTagName("idv_amount_max").item(0).getTextContent());
 System.out.println(eElement.getElementsByTagName("exshowroomPrice_min").item(0).getTextContent());
 System.out.println(eElement.getElementsByTagName("exshowroomPrice_max").item(0).getTextContent());
 System.out.println(eElement.getElementsByTagName("outputmessage").item(0).getTextContent());




                                        }
                                    }

                                    //getElementsByTagName("exshowroomPrice")

                                } catch (Exception e) {
                                    e.printStackTrace();
                                }