⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 xmlhandler.java

📁 东软短信网关接入程序
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
    Node node = findNode(getRootNode(), dn, attrName, attrValue);
    if (node == null)
      return null;
    String value = ( (Element) node).getAttribute(resultAttrName);
    return value;
  }

  public String getElementAttrByAttr(Node parentNode, String dn,
                                     String attrName, String attrValue,
                                     String resultAttrName) {
    Node node = findNode(parentNode, dn, attrName, attrValue);
    if (node == null)
      return null;
    String value = ( (Element) node).getAttribute(resultAttrName);
    return value;
  }

  /**
   * 取得一个节点的文本值
   *
   * @param dn 节点名,多层路径以"."分隔
   * @return 文本值
   */
  public java.lang.String getElementText(String dn) {
    Node node = findNode(getRootNode(), dn);
    if (node != null) {
      if (node.hasChildNodes()) {
        Node child = node.getFirstChild();
        if (child.getNodeType() == Node.TEXT_NODE) {
          CharacterData childText = (CharacterData) child;
          String text = childText.getData();
          return text;
        }
      }
    }
    return null;
  }

  /**
   * 取得一个节点的文本值
   *
   * @param node 节点
   * @return 文本值
   */
  public java.lang.String getElementText(Node node) {
    if (node != null) {
      if (node.hasChildNodes()) {
        Node child = node.getFirstChild();
        if (child.getNodeType() == Node.TEXT_NODE) {
          CharacterData childText = (CharacterData) child;
          String text = childText.getData();
          return text;
        }
      }
    }
    return null;
  }

  /**
   * 取得多个同名节点的文本值
   *
   * @param dn 节点名,多层路径以"."分隔
   * @param tagName 标记名
   * @return 文本值数组
   */
  public java.lang.String[] getElementsText(String dn, String tagName) {
    Node[] nodes = findNodes(getRootNode(), dn, tagName);
    if (nodes != null) {
      String[] texts = new String[nodes.length];
      for (int i = 0; i < nodes.length; i++) {
        texts[i] = getElementText(nodes[i]);
      }
      return texts;
    }
    return null;
  }

  /**
   * 取得多个同名节点的文本值
   *
   * @param parentNode 父节点
   * @param dn 节点名,多层路径以"."分隔
   * @param tagName 标记名
   * @return 文本值数组
   */
  public java.lang.String[] getElementsText(Node parentNode, String dn,
                                            String tagName) {
    Node[] nodes = findNodes(parentNode, dn + "." + tagName);
    if (nodes != null) {
      String[] texts = new String[nodes.length];
      for (int i = 0; i < nodes.length; i++) {
        texts[i] = getElementText(nodes[i]);
      }
      return texts;
    }
    return null;
  }

  /*
    //取得多个同名节点的文本值
    public java.lang.String [] getElementsText(String dn, String tagName, String attrName, String attrValue)
    {
      Node[] nodes = findNodes(getRootNode().getNodeName()+"."+dn, tagName, attrName, attrValue);
      if(nodes!=null)
      {
        String[] texts=new String[nodes.length];
        for(int i=0;i<nodes.length;i++)
        {
          texts[i]=getElementText(nodes[i]);
        }
        return  texts;
      }
      return null;
    }
   */
  /**
   * 取得多个同名节点的文本值
   *
   * @param dn 节点名,多层路径以"."分隔
   * @return 文本值数组
   */
  public java.lang.String[] getElementsText(String dn) {
    int j = dn.lastIndexOf(".");
    if (j != -1) {
      String subdn = dn.substring(0, j);
      String tagName = dn.substring(j + 1, dn.length());
      return getElementsText(subdn, tagName);
    }
    else {
      return getElementsText(dn, dn);
    }
  }

  /**
   * 取得多个同名节点的文本值
   *
   * @param parentNode 父节点
   * @param dn 节点名,多层路径以"."分隔
   * @return 文本值数组
   */
  public java.lang.String[] getElementsText(Node parentNode, String dn) {
    int j = dn.lastIndexOf(".");
    if (j != -1) {
      String subdn = dn.substring(0, j);
      String tagName = dn.substring(j + 1, dn.length());
      return getElementsText(parentNode, subdn, tagName);
    }
    else {
      return getElementsText(parentNode, dn, dn);
    }
  }

  /**
   * 取得给定节点下节点的文本值
   *
   * @param parentNode 父节点
   * @param dn 节点名,多层路径以"."分隔
   * @return 文本值
   */
  public String getElementText(Node parentNode, String dn) {
    return getElementText(findNode(parentNode, dn));
  }

  /*
    public  String[] getElements(String dn)
    {
      return null;
    }
   */

  /**
   * 取得根结点
   *
   * @return 根结点
   */
  public Element getRootNode() {
    if (document == null) {
      return null;
    }
    return document.getDocumentElement();

  }

  /**
   * 删除指定节点下所有子节点
   *
   * @param node 指定节点
   */
  public void removeAllChilds(Node node) {
    if (node == null)
      return;
    while (node.hasChildNodes()) {
      node.removeChild(node.getFirstChild());
    }
  }

  /**
   * 系统输出字符串数组
   *
   * @param strs 字符串数组
   */
//  public static void  printArray(String[] strs)
//  {
//    for(int i=0;i<strs.length;i++)
//    {
//      System.out.println("array["+i+"]="+strs[i]);
//    }
//  }

  /**
   * 系统输出
   *
   * @param objects 对象数组
   */
  public static void printArray(Object[] objects) {
    for (int i = 0; i < objects.length; i++) {
      System.out.println("array[" + i + "]=" + objects[i]);
    }
  }

  /**
   * 添加根节点
   *
   * @param rootName 节点名
   * @return 根节点
   */
  public Node addRootNode(String rootName) {
    Node oldRoot = document.getFirstChild();
    if (oldRoot != null)
      document.removeChild(oldRoot);
    Element root = document.createElement(rootName); // Create Root Element
    return document.appendChild(root); // Add Root to Document
  }

  /**
   * 在给定节点下添加节点
   *
   * @param parentNode 父节点
   * @param nodeName 节点名
   * @return node added
   */
  public Node addNode(Node parentNode, String nodeName) {
    Element element = document.createElement(nodeName); // Create Element
    return parentNode.appendChild(element);
  }

  /**
   * 在给定节点下添加带属性节点
   *
   * @param parentNode 父节点
   * @param nodeName 节点名
   * @param attrNames 属性名数组
   * @param attrValues 属性值数组
   * @return 添加的节点
   */
  public Node addNodeWithAttrs(Node parentNode, String nodeName,
                               String attrNames[], String attrValues[]) {
    if (nodeName == null || nodeName.length() == 0)
      return null;
    Element element = document.createElement(nodeName); // Create element
    addAttrs(element, attrNames, attrValues);
    return parentNode.appendChild(element);
  }

  /**
   * 对给定节点添加属性
   *
   * @param element 节点
   * @param attrNames 属性名数组
   * @param attrValues 属性值数组
   */
  public void addAttrs(Element element, String attrNames[], String attrValues[]) {
    if (element == null)
      return;
    if (attrNames == null || attrNames.length == 0)
      return;
    for (int i = 0; i < attrNames.length; i++) {
      element.setAttribute(attrNames[i], attrValues[i]);
    }
  }

  /**
   * 在给定节点下添加文本
   *
   * @param node 给定节点
   * @param text 文本
   */
  public void addText(Node node, String text) {
    if (node == null)
      return;
    Node textNode = document.createTextNode(text);
    node.appendChild(textNode);
  }

  /**
   * 在给定节点下添加文本
   *
   * @param parentNode 父节点
   * @param dn 节点名,多层路径以"."分隔
   * @param text 文本
   */
  public void addText(Node parentNode, String dn, String text) {
    if (parentNode == null)
      return;
    addText(findNode(parentNode, dn), text);
  }

  /**
   * 在给定节点下添加带文本节点
   *
   * @param parentNode 给定节点
   * @param nodeName 节点名
   * @param text 文本
   * @return 添加的节点
   */
  public Node addNodeWithText(Node parentNode, String nodeName, String text) {
    if (parentNode == null)
      return null;
    Element element = document.createElement(nodeName);
    Node textNode = document.createTextNode(text);
    element.appendChild(textNode);
    return parentNode.appendChild(element);
  }

  /**
   * 在给定节点下取CDATA
   *
   * @param parentNode 给定节点
   * @return CDATA文本
   */
  public String getCDATA(Node parentNode) {
    if (parentNode == null)
      return null;
    NodeList list = parentNode.getChildNodes();
    if (list == null)
      return null;
    String data = null;
    for (int i = 0; i < list.getLength(); i++) {
      Node child = list.item(i);
      if (child.getNodeType() == Node.CDATA_SECTION_NODE) {
        data = ( (CDATASection) child).getData();
        break;
      }
    }
    return data;
  }

  /**
   * 在给定节点下添加CDATA
   *
   * @param node 给定节点
   * @param text 文本
   * @return CDATA node added
   */
  public Node addCDATA(Node node, String text) {
    if (node == null)
      return null;
    Node CDATANode = document.createCDATASection(text);
    return node.appendChild(CDATANode);
  }

  /**
   * 添加namespace节点
   *
   * @param node 给定节点
   * @param namespaceURI namespace URI of the element to create.
   * @param qualifiedName qualified name of the element type to instantiate.
   * @return NS node added
   */
  public Node addNS(Node node, String namespaceURI, String qualifiedName) {
    if (node == null)
      return null;
    Node nsNode = document.createElementNS(namespaceURI, qualifiedName);
    return node.appendChild(nsNode);
  }

  /**
   * 写入文件
   */
  public void write() {
    try {
      OutputFormat format = new OutputFormat(document); //Serialize DOM
      format.setIndenting(true);
      FileOutputStream fileOut = new FileOutputStream(this.file); //Writer will be a File
      XMLSerializer serial = new XMLSerializer(fileOut, format);
      serial.asDOMSerializer(); // As a DOM Serializer
      serial.serialize(document.getDocumentElement());
      fileOut.close();
    }
    catch (Exception e) {
      e.printStackTrace();
    }
  }
  /*
    public static void main(String[] argv) throws Exception
    {

      XmlHandler xh=new XmlHandler("atm_omp.xml");
      Element rootNode=xh.getRootNode();
      System.out.println(rootNode.getNodeName());
      System.out.println(rootNode.toString());
      //测试取得多个同名节点
      System.out.println("测试取得多个同名节点");
      Node[] nodes=xh.findNodes(rootNode,"class");
      System.out.println(nodes.length);
      for(int i=0;i<nodes.length;i++)
      {
        System.out.println(nodes[i]);
      }

      nodes=xh.findNodes(rootNode,"logical-object","item");
      System.out.println(nodes.length);
      for(int i=0;i<nodes.length;i++)
      {
        System.out.println(nodes[i]);
      }

      //测试通过属性找到同名节点的指定节点(第一个匹配)
      System.out.println("测试通过属性找到同名节点的指定节点");
      Node node=xh.findNode(rootNode , "logical-object","objectid","object1");
      System.out.println(node);

      node=xh.findNode("logical-object","objectid","object1");
      System.out.println(node);

      //测试取得多个同名节点的属性
      System.out.println("测试取得多个同名节点的属性");
      String[] attrs=xh.getElementsAttr("logical-object","objectid");
      System.out.println(attrs.length);
      printArray(attrs);

      attrs=xh.getElementsAttr(node,"item","itemid");
      System.out.println(attrs.length);
      printArray(attrs);

      attrs=xh.getElementsAttr(xh.findNode("logical-object","objectid","object1"),"item","lastvalue");
      System.out.println(attrs.length);
      printArray(attrs);

      //测试删除节点
      System.out.println("测试删除节点");
      Node viewConfigNode = xh.findNode(xh.getRootNode(),"birdview-config");
      //xh.removeAllChilds(viewConfigNode);
   Node[] nodes=xh.findNodes(xh.getRootNode(),"birdview-config.logical-object");
      System.out.println(nodes.length);
      for(int i=0;i<nodes.length;i++)
      {
        System.out.println(nodes[i]);
      }

      XmlHandler xh=new XmlHandler("logical_object_config.xml");
      Node[] nodes=xh.findNodes(xh.getRootNode(),"logical-object");
      printArray(nodes);
      System.out.println("-----------------------");
      String text1=xh.getElementText(nodes[0],"rule.event-set");
      System.out.println(text1);

      System.out.println("-----------------------");
      nodes=xh.findNodes(xh.getRootNode(),"logical-object","name");
      printArray(nodes);

      System.out.println("-----------------------");
      Node node=xh.findNode(xh.getRootNode(),"logical-object","local-id","1");
      System.out.println("xh.findNode  "+node);

      //测试取得节点的文本值
      System.out.println("测试取得节点的文本值");
      String text=xh.getElementText("logical-object.local-id");
      System.out.println(text);

      //测试取得多个同名节点的文本值
      System.out.println("测试取得多个同名节点的文本值");
      String[] texts=xh.getElementsText("logical-object.name");
      printArray(texts);

      texts=xh.getElementsText("logical-object","name");
      printArray(texts);

      XmlHandler xh = new XmlHandler("ns_test",XmlHandler.READ_WRITE_MODE);
      Node rootNode = xh.addRootNode("styles");
      //Node nsNode = xh.addNS(rootNode,"http://www.w3.org/2001/XMLSchema-instance","xsi");
      ((Element)rootNode).setAttributeNS("http://www.w3.org/2000/xmlns/","xmlns:xsi","http://www.w3.org/2001/XMLSchema-instance");
      ((Element)rootNode).setAttributeNS("","xsi:noNamespaceSchemaLocation","ilog/cpl/schema/styles.xsd");
      xh.write();

   XmlHandler xh1 = new XmlHandler("testwrite.xml", XmlHandler.READ_WRITE_MODE);
      XmlHandler xh = new XmlHandler("view_config.xml");
      Element rootNode = xh.getRootNode();
      xh1.addRootNode(rootNode.getNodeName());
      System.out.println(xh1.getRootNode().getNodeName());
      xh1.addNode(xh1.getRootNode(),"logicalobject");
      String[] attrs1 = {"objectid"};
      String[] values1 = {"逻辑对象1"};
      xh1.addNodeWithAttrs(xh1.getRootNode(),"logicalobject",attrs1,values1);
      String[] attrs=xh.getElementsAttr(xh.findNode("logicalobject","objectid","object1"),"item","itemid");
      printArray(attrs);
      String[] values=xh.getElementsAttr(xh.findNode("logicalobject","objectid","object1"),"item","lastvalue");
      printArray(values);
      String[] name = {"itemid","value"};
      String[] value = new String[2];
      for(int i=0;i<attrs.length;i++){
        value[0] = attrs[i];
        value[1] = values[i];
        xh1.addNodeWithAttrs(xh1.findNode("logicalobject","objectid","逻辑对象1"),"item",name,value);
      }
      xh1.write();
    }
   */

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -