📄 domutils.java
字号:
package com.jeffhanson.atompub;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.Iterator;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.stream.StreamResult;
import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import com.jeffhanson.atompub.introspect.ServiceDocumentException;
public class DOMUtils
{
private static TransformerFactory transformerFactory = null;
private static Transformer transformer = null;
public static Transformer getTransformer()
throws TransformerConfigurationException
{
if (transformerFactory == null)
{
transformerFactory = TransformerFactory.newInstance();
}
if (transformer == null)
{
transformer = transformerFactory.newTransformer();
}
return transformer;
}
public static void write(Node node, OutputStream out)
throws ServiceDocumentException
{
javax.xml.transform.dom.DOMSource domSource =
new javax.xml.transform.dom.DOMSource(node);
try
{
DOMUtils.getTransformer().transform(domSource,
new StreamResult(out));
}
catch (TransformerException e)
{
e.printStackTrace();
throw new ServiceDocumentException(e);
}
}
/**
*
* @param doc
* @param elementTagName
* @return Node
*/
public static Node getDOMNode(Document doc,
String elementTagName)
{
org.w3c.dom.NodeList nodeList = doc.getElementsByTagName(elementTagName);
if (nodeList != null && nodeList.getLength() > 0)
{
return nodeList.item(0);
}
return null;
}
/**
*
* @param parentNode
* @param childNodeTagName
* @return Node
*/
public static Node getChildNode(Node parentNode,
String childNodeTagName)
{
NodeList childNodes = parentNode.getChildNodes();
if (childNodes != null && childNodes.getLength() > 0)
{
for (int i = 0; i < childNodes.getLength(); i++)
{
Node node = childNodes.item(i);
if (node.getNodeName().equalsIgnoreCase(childNodeTagName))
{
return node;
}
}
}
return null;
}
/**
*
* @param parentNode
* @param childNodeTagName
* @return Iterator<Node>
*/
public static Iterator<Node> getChildNodes(Node parentNode,
String childNodeTagName)
{
ArrayList<Node> matchingNodes = new ArrayList<Node>();
NodeList childNodes = parentNode.getChildNodes();
if (childNodes != null && childNodes.getLength() > 0)
{
for (int i = 0; i < childNodes.getLength(); i++)
{
Node node = childNodes.item(i);
String nodeName = node.getNodeName();
if (nodeName.equalsIgnoreCase(childNodeTagName))
{
matchingNodes.add(node);
}
}
}
return matchingNodes.iterator();
}
/**
*
* @param parentNode
* @param childNodeTagName
* @param attrValue
* @return Node
*/
public static Node getChildNodeWithAttr(Node parentNode,
String childNodeTagName,
String attrName,
String attrValue)
{
NodeList childNodes = parentNode.getChildNodes();
if (childNodes != null && childNodes.getLength() > 0)
{
for (int i = 0; i < childNodes.getLength(); i++)
{
Node node = childNodes.item(i);
String nodeName = node.getNodeName();
if (nodeName.equalsIgnoreCase(childNodeTagName))
{
org.w3c.dom.NamedNodeMap nodeMap = node.getAttributes();
if (nodeMap != null)
{
org.w3c.dom.Node attrNode = nodeMap.getNamedItem(attrName);
if (attrNode != null && attrNode.getNodeValue().equalsIgnoreCase(attrValue))
{
return node;
}
}
}
}
}
return null;
}
/**
*
* @param doc
* @param elementTagName
* @param attrValue
* @return Node
*/
public static Node getDOMNodeWithAttr(Document doc,
String elementTagName,
String attrName,
String attrValue)
{
org.w3c.dom.NodeList nodeList = doc.getElementsByTagName(elementTagName);
if (nodeList != null && nodeList.getLength() > 0)
{
for (int i = 0; i < nodeList.getLength(); i++)
{
Node node = nodeList.item(i);
org.w3c.dom.NamedNodeMap nodeMap = node.getAttributes();
if (nodeMap != null)
{
org.w3c.dom.Node attrNode = nodeMap.getNamedItem(attrName);
if (attrNode != null && attrNode.getNodeValue().equalsIgnoreCase(attrValue))
{
return node;
}
}
}
}
return null;
}
/**
*
* @param doc
* @param elementTagName
* @param attrName
* @return String
*/
public static String getDOMNodeAttributeValue(Document doc,
String elementTagName,
String attrName)
throws DOMUtilsException
{
org.w3c.dom.Node node = getDOMNode(doc, elementTagName);
if (node == null)
{
throw new DOMUtilsException("Could not find an element with tag [" + elementTagName + "]");
}
org.w3c.dom.NamedNodeMap nodeMap = node.getAttributes();
if (nodeMap != null)
{
org.w3c.dom.Node attrNode = nodeMap.getNamedItem(attrName);
if (attrNode != null)
{
return attrNode.getTextContent();
}
}
return "";
}
/**
*
* @param node
* @param attrName
* @return String
*/
public static String getDOMNodeAttributeValue(Node node,
String attrName)
{
org.w3c.dom.NamedNodeMap nodeMap = node.getAttributes();
if (nodeMap != null)
{
org.w3c.dom.Node attrNode = nodeMap.getNamedItem(attrName);
if (attrNode != null)
{
return attrNode.getTextContent();
}
}
return "";
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -