티스토리 뷰

[JAVA] getTextContent() JDK 1.4에서 사용하기


출처: http://www.java-answers.com/index.php?action=recent;start=60


자바 1.5 XML 파서 API 중에 getTextContent() 메소드가 JDK 1.4에서는 지원이 되지 않는다고 합니다.


JDK 1.6에서 작업을 마쳤는데 JDK 1.4에서 해보니 getTextContent() 메소드가 없다고 하네요.


 ex) CDATA 도 받을려면
if (node.getNodeType() == Node.TEXT_NODE || node.getNodeType() == Node.CDATA_SECTION_NODE) 


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


public static String getTextContent(Node node) throws DOMException
{
  String textContent = "";

  if (node.getNodeType() == Node.ATTRIBUTE_NODE)
  {
    textContent = node.getNodeValue(); 
  }
  else
  {
    Node child = node.getFirstChild();

    if (child != null)
    {
      Node sibling = child.getNextSibling();
        if (sibling != null)
        {
          StringBuffer sb = new StringBuffer();
          getTextContent(node, sb);
          textContent = sb.toString();
        }
        else
        {         if (child.getNodeType() == Node.TEXT_NODE) 

        {

          textContent = child.getNodeValue();

        }

        else

        {

          textContent = getTextContent(child);

        }

      }

    }

  }


  return textContent;

}


private static void getTextContent(Node node, StringBuffer sb) throws DOMException

{

  Node child = node.getFirstChild();

  

  while (child != null)

  {

    if (child.getNodeType() == Node.TEXT_NODE) 

    {

      sb.append(child.getNodeValue());

    }

    else

    {

      getTextContent(child, sb);

    }

    child = child.getNextSibling();

  }


public static void setTextContent(Node node, String textContent) throws DOMException

{

  if (node.getNodeType() == Node.ATTRIBUTE_NODE)

  {

    if (textContent == null) textContent = "";

      node.setNodeValue(textContent); 

  }

  else

  {

    Node child;

    

    while ((child = node.getFirstChild()) != null)

    {

      node.removeChild(child);

    }

        

    if (!StringUtils.isEmpty(textContent))

    {

      Text textNode = node.getOwnerDocument().createTextNode(textContent);

      node.appendChild(textNode);

    }

  }

}





댓글