Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.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 使用DOM解析器_Java_Xml_Xml Parsing - Fatal编程技术网

Java 使用DOM解析器

Java 使用DOM解析器,java,xml,xml-parsing,Java,Xml,Xml Parsing,我正在尝试使用以下代码解析xml,我能够解析它并读取值。但我不确定如何修改代码以读取节点“INFO”,我已转义该节点并直接使用PARAM,如下所示: XML 23343 数据 345 CDATA ID 6788 java代码是: DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance(); DocumentBuilder dBuilder = dbFactory.newDocument

我正在尝试使用以下代码解析xml,我能够解析它并读取值。但我不确定如何修改代码以读取节点“INFO”,我已转义该节点并直接使用PARAM,如下所示:

XML


23343
数据
345
CDATA ID
6788
java代码是:

      DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
      DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
      Document doc = dBuilder.parse(fXmlFile);
      doc.getDocumentElement().normalize();

      NodeList nList = doc.getElementsByTagName("PARAM");

      for (int temp = 0; temp < nList.getLength(); temp++) {
        Node nNode = nList.item(temp);
        if (nNode.getNodeType() == Node.ELEMENT_NODE) {
          Element eElement = (Element) nNode;
          if (getTagValue("PARAM_NAME",eElement).equals("data")) {
            String type = getTagValue("PARAM_VALUE", eElement);
          } 
        }
      }
    } catch (Exception e) {
      e.printStackTrace();
    }
  }

  private static String getTagValue(String sTag, Element eElement) {
    NodeList nlList = eElement.getElementsByTagName(sTag).item(0).getChildNodes();
    Node nValue = (Node) nlList.item(0);
    return nValue.getNodeValue();
  }
}
DocumentBuilderFactory dbFactory=DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder=dbFactory.newDocumentBuilder();
documentdoc=dBuilder.parse(fXmlFile);
doc.getDocumentElement().normalize();
NodeList nList=doc.getElementsByTagName(“参数”);
对于(int-temp=0;temp

我想添加INFO节点,如何修改上述代码?

上面的代码在param节点上循环,但不处理它们。您的问题是“如何添加信息节点”。但是加上什么呢?您想对INFO节点做什么?能否在添加另一个INFO节点后添加要获取的输出XML?
      DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
      DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
      Document doc = dBuilder.parse(fXmlFile);
      doc.getDocumentElement().normalize();

      NodeList nList = doc.getElementsByTagName("PARAM");

      for (int temp = 0; temp < nList.getLength(); temp++) {
        Node nNode = nList.item(temp);
        if (nNode.getNodeType() == Node.ELEMENT_NODE) {
          Element eElement = (Element) nNode;
          if (getTagValue("PARAM_NAME",eElement).equals("data")) {
            String type = getTagValue("PARAM_VALUE", eElement);
          } 
        }
      }
    } catch (Exception e) {
      e.printStackTrace();
    }
  }

  private static String getTagValue(String sTag, Element eElement) {
    NodeList nlList = eElement.getElementsByTagName(sTag).item(0).getChildNodes();
    Node nValue = (Node) nlList.item(0);
    return nValue.getNodeValue();
  }
}