package jp.co.nec.ome.utility.xml;
import java.io.*;
import javax.xml.parsers.*;
import org.w3c.dom.*;
import org.xml.sax.*;
//*****************************************************************************
/**
聽* XML鏂囨浉鍒嗘瀽銈儵銈廣仹銇欍?lt;BR>
聽* XML銇榪般仌銈屻仸銇勩倠瀹氱京銈掑垎鏋愩仐銆佸瓙瑕佺礌銈勫瓙瑕佺礌銇唴瀹廣伄鍙栨壉銈掑鏄撱伀銇欍倠
聽* 銉︺兗銉嗐偅銉儐銈c偗銉┿偣銇с仚銆?br />聽* <P>
聽* @author聽 Hisaya Saito
聽* @version $Revision:聽聽 5.2聽 $ $Date:聽聽 20 May 2005 10:24:55聽 $
聽* @since聽聽 OpenMeisterEnterprise/EF 3.2
聽*/
//*****************************************************************************
public class OmXMLAnalyzer {
聽 //***************************************************************************
聽 //銈熾兂銈廣儓銉┿偗銈?br />聽 //***************************************************************************
聽 //***************************************************************************
聽 /**
聽聽 * private銇偝銉熾偣銉堛儵銈偪銇с仚銆?lt;BR>
聽聽 * 銈廣偪銉嗐偅銉冦偗銉°偨銉冦儔銇伩銇埄鐢ㄣ仺銇椼併偆銉熾偣銈褲兂銈瑰寲銇笉璦卞彲銇ㄣ仐銇俱仚銆?br />聽聽 */
聽 //***************************************************************************
聽 private OmXMLAnalyzer() {
聽 }
聽 //***************************************************************************
聽 //public銉°偨銉冦儔
聽 //***************************************************************************
聽 //***************************************************************************
聽 /**
聽聽 * XML銉曘偂銈ゃ儷銉戙偣銇枃瀛楀垪銇嬨倝XML鏂囨浉銇儷銉箋儓瑕佺礌銈掑彇寰椼仐銇俱仚銆?br />聽聽 * @param聽 argFilePath XML銉曘偂銈ゃ儷銉戙偣
聽聽 * @return 銉兗銉堣绱?br />聽聽 * @exception FileNotFoundException 浣曘倝銇嬨伄鐞嗙敱銇с儠銈°偆銉倰闁嬨亸銇撱仺銇屻仹銇嶃仾銇勫牬鍚?br />聽聽 * @exception ParserConfigurationException 瑕佹眰銇曘倢銇熸鎴愩倰婧銇熴仚DocumentBuilder銈掔敓鎴愩仹銇嶃仾銇勫牬鍚?br />聽聽 * @exception SAXException 妲嬫枃瑙f瀽銈ㄣ儵銉箋亴鐧虹敓銇椼仧鍫村悎
聽聽 * @exception IOException 鍏ュ嚭鍔涖偍銉┿兗銇岀櫤鐢熴仐銇熷牬鍚?br />聽聽 */
聽 //***************************************************************************
聽 public static Element getRootElement(String argFilePath)
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 throws FileNotFoundException,
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 ParserConfigurationException,
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 SAXException,
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 IOException {
聽聽聽 Element rootElement = null;
聽聽聽 //XML鏂囨浉瑙i噲銇仧銈併伄Parser銇綔鎴?br />聽聽聽 File defineFile = new File(argFilePath);
聽聽聽 InputStream inputStream = new FileInputStream(defineFile);
聽聽聽 try {
聽聽聽聽聽 DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
聽聽聽聽聽 DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();
聽聽聽聽聽 Document document = documentBuilder.parse(inputStream);
聽聽聽聽聽 //XML鏂囨浉銇儎銉兗銇渶涓婁綅銇绱爎oot銈掑彇寰椼仐銇俱仚銆?br />聽聽聽聽聽 rootElement = document.getDocumentElement();
聽聽聽 } finally {
聽聽聽聽聽 inputStream.close();
聽聽聽 }
聽聽聽 return rootElement;
聽 }
聽 //***************************************************************************
聽 /**
聽聽 * 鍏ュ姏銈廣儓銉兗銉犮亱銈塜ML鏂囨浉銇儷銉箋儓瑕佺礌銈掑彇寰椼仐銇俱仚銆?br />聽聽 * @param聽 argInputStream
聽聽 * @return 銉兗銉堣绱?br />聽聽 * @exception FileNotFoundException 浣曘倝銇嬨伄鐞嗙敱銇с儠銈°偆銉倰闁嬨亸銇撱仺銇屻仹銇嶃仾銇勫牬鍚?br />聽聽 * @exception ParserConfigurationException 瑕佹眰銇曘倢銇熸鎴愩倰婧銇熴仚DocumentBuilder銈掔敓鎴愩仹銇嶃仾銇勫牬鍚?br />聽聽 * @exception SAXException 妲嬫枃瑙f瀽銈ㄣ儵銉箋亴鐧虹敓銇椼仧鍫村悎
聽聽 * @exception IOException 鍏ュ嚭鍔涖偍銉┿兗銇岀櫤鐢熴仐銇熷牬鍚?br />聽聽 */
聽 //***************************************************************************
聽 public static Element getRootElement(InputStream argInputStream)
聽聽聽聽聽 throws FileNotFoundException,
聽聽聽聽聽聽聽聽聽聽聽聽 ParserConfigurationException,
聽聽聽聽聽聽聽聽聽聽聽聽 SAXException,
聽聽聽聽聽聽聽聽聽聽聽聽 IOException {
聽聽聽 Element rootElement = null;
聽聽聽 //XML鏂囨浉瑙i噲銇仧銈併伄Parser銇綔鎴?br />聽聽聽 try {
聽聽聽聽聽 DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
聽聽聽聽聽 DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();
聽聽聽聽聽 Document document = documentBuilder.parse(argInputStream);
聽聽聽聽聽 //XML鏂囨浉銇儎銉兗銇渶涓婁綅銇绱爎oot銈掑彇寰椼仐銇俱仚銆?br />聽聽聽聽聽 rootElement = document.getDocumentElement();
聽聽聽 } finally {
聽聽聽聽聽 argInputStream.close();
聽聽聽 }
聽聽聽 return rootElement;
聽 }
聽 //***************************************************************************
聽 /**
聽聽 * 鎸囧畾銇椼仧瑕绱犮伄涓仹鏈鍒濄伄瀛愯绱犮倰鍙栧緱銇椼伨銇欍?br />聽聽 * @param聽 argParentElement聽聽聽 瑕绱?br />聽聽 * @param聽 argChildElementName 瀛愯绱犲悕
聽聽 * @return 鏈鍒濄伀鍙栧緱銇с亶銇熷瓙瑕佺礌
聽聽 */
聽 //***************************************************************************
聽 public static Element getChildElement(Element argParentElement,
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 String argChildElementName) {
聽聽聽 return getChildElement(argParentElement, argChildElementName, 0);
聽 }
聽 //***************************************************************************
聽 /**
聽聽 * 鎸囧畾銇椼仧瑕绱犮伄涓伄鎸囧畾銇椼仧闋嗙暘銇瓙瑕佺礌銈掑彇寰椼仐銇俱仚銆?br />聽聽 * @param聽 argParentElement聽聽聽聽聽聽 瑕绱?br />聽聽 * @param聽 argChildElementName聽聽聽聽聽聽聽聽 瀛愯绱犲悕
聽聽 * @param聽 argSpecificationNumber 闋嗙暘
聽聽 * @return 鎸囧畾銇椼仧闋嗙暘銇瓙瑕佺礌
聽聽 */
聽 //***************************************************************************
聽 public static Element getChildElement(Element argParentElement,
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 String argChildElementName,
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 int argSpecificationNumber) {
聽聽聽 NodeList childNodeList =
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 argParentElement.getElementsByTagName(argChildElementName);
聽聽聽 return (Element)childNodeList.item(argSpecificationNumber);
聽 }
聽 //***************************************************************************
聽 /**
聽聽 * 鎸囧畾銇椼仧瑕绱犮伄涓伄鍏ㄣ仸銇瓙瑕佺礌銈掗厤鍒椼仹鍙栧緱銇椼伨銇欍?br />聽聽 * @param聽 argParentElement聽聽聽聽聽聽 瑕绱?br />聽聽 * @param聽 argChildElementName聽聽聽 瀛愯绱犲悕
聽聽 * @return 瀛愯绱犮伄閰嶅垪
聽聽 */
聽 //***************************************************************************
聽 public static Element[] getChildElementList(Element argParentElement,
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 String argChildElementName) {
聽聽聽 NodeList childNodeList =
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 argParentElement.getElementsByTagName(argChildElementName);
聽聽聽 int listCount = childNodeList.getLength();
聽聽聽 if(listCount == 0) {
聽聽聽聽聽 return null;
聽聽聽 }
聽聽聽 Element[] childElementList = new Element[listCount];
聽聽聽 for (int i0 = 0; i0 < listCount; i0++) {
聽聽聽聽聽 childElementList[i0] = (Element)childNodeList.item(i0);
聽聽聽 }
聽聽聽 return childElementList;
聽 }
聽 //***************************************************************************
聽 /**
聽聽 * 鎸囧畾銇椼仧瑕佺礌銇腑銇ф寚瀹氥仚銈嬪睘鎬с伄鍊ゃ亴璦畾銇曘倢銇︺亜銈嬪瓙瑕佺礌銈掑彇寰椼仐銇俱仚銆?br />聽聽 * @param聽 argParentElement聽聽聽 瑕绱?br />聽聽 * @param聽 argChildElementName 瀛愯绱犲悕
聽聽 * @param聽 argAttributeName聽聽聽 灞炴у悕
聽聽 * @param聽 argAttributeValue聽聽 灞炴с伄鍊?br />聽聽 * @return 鎸囧畾銇欍倠灞炴с伄鍊ゃ亴璦畾銇曘倢銇︺亜銈嬪瓙瑕佺礌銇ф渶鍒濄伀鍙栧緱銇с亶銇熴倐銇?br />聽聽 */
聽 //***************************************************************************
聽 public static Element getChildElement(Element argParentElement,
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 String argChildElementName,
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 String argAttributeName,
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 String argAttributeValue) {
聽聽聽 NodeList childNodeList = argParentElement.getElementsByTagName(argChildElementName);
聽聽聽 int listLength = childNodeList.getLength();
聽聽聽 if(listLength == 0) {
聽聽聽聽聽 return null;
聽聽聽 }
聽聽聽 Element childElement = null;
聽聽聽 for (int i0 = 0; i0 < listLength; i0++) {
聽聽聽聽聽 Element localChildElement = (Element)childNodeList.item(i0);
聽聽聽聽聽 String attributeValue = localChildElement.getAttribute(argAttributeName);
聽聽聽聽聽 if (attributeValue.equals(argAttributeValue)) {
聽聽聽聽聽聽聽 childElement = localChildElement;
聽聽聽聽聽聽聽 break;
聽聽聽聽聽 }
聽聽聽 }
聽聽聽 return childElement;
聽 }
聽 //***************************************************************************
聽 /**
聽聽 * 鎸囧畾銇椼仧瑕佺礌銇唴瀹廣倰鍙栧緱銇椼伨銇欍?br />聽聽 * @param聽 argElement 鍐呭銈掑彇寰椼仐銇熴亜瑕佺礌
聽聽 * @return 鍐呭
聽聽 */
聽 //***************************************************************************
聽 public static String getElementContents(Element argElement) {
聽聽聽 if(argElement != null) {
聽聽聽聽聽 Text text = (Text)argElement.getFirstChild();
聽聽聽聽聽 if(text == null) {
聽聽聽聽聽聽聽 return null;
聽聽聽聽聽 }
聽聽聽聽聽 return text.getNodeValue();
聽聽聽 } else {
聽聽聽聽聽 return null;
聽聽聽 }
聽 }
聽 //***************************************************************************
聽 /**
聽聽 * 鎸囧畾銇椼仧瑕绱犮伄涓仹鏈鍒濄伄瀛愯绱犮伄鍐呭銈掑彇寰椼仐銇俱仚銆?br />聽聽 * @param聽 argParentElement 瑕绱?br />聽聽 * @param聽 argChildElementName聽 鍐呭銈掑彇寰椼仐銇熴亜瀛愯绱犲悕
聽聽 * @return 鍐呭
聽聽 */
聽 //***************************************************************************
聽 public static String getChildElementContents(Element argParentElement,
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 String argChildElementName) {
聽聽聽 Element childElement = getChildElement(argParentElement,
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 argChildElementName);
聽聽聽 return getElementContents(childElement);
聽 }
聽 //***************************************************************************
聽 /**
聽聽 * 鎸囧畾銇椼仧瑕绱犮伄涓仹鎸囧畾銇欍倠灞炴с伄鍊ゃ亴璦畾銇曘倢銇︺亜銈嬪瓙瑕佺礌銇唴瀹廣倰鍙栧緱銇椼伨銇欍?br />聽聽 * @param聽 argParentElement聽聽聽 瑕绱?br />聽聽 * @param聽 argChildElementName 鍐呭銈掑彇寰椼仐銇熴亜瀛愯绱犲悕
聽聽 * @param聽 argAttributeName聽聽聽 灞炴у悕
聽聽 * @param聽 argAttributeValue聽聽 灞炴с伄鍊?br />聽聽 * @return 鍐呭
聽聽 */
聽 //***************************************************************************
聽 public static String getChildElementContents(Element argParentElement,
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 String argChildElementName,
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 String argAttributeName,
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 String argAttributeValue) {
聽聽聽 Element childElement = getChildElement(argParentElement,
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 argChildElementName,
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 argAttributeName,
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 argAttributeValue);
聽聽聽 return getElementContents(childElement);
聽 }
聽 //***************************************************************************
聽 /**
聽聽 * 鎸囧畾銇椼仧瑕绱犮伄涓仹鏈鍒濄伄瀛愯绱犮伄灞炴с伄鍊ゃ倰鍙栧緱銇椼伨銇欍?br />聽聽 * @param聽 argParentElement聽聽聽 瑕绱?br />聽聽 * @param聽 argChildElementName 瀛愯绱犲悕
聽聽 * @param聽 argAttributeName聽聽聽 灞炴у悕
聽聽 * @return 灞炴с伄鍊?br />聽聽 */
聽 //***************************************************************************
聽 public static String getAttributeValue(Element argParentElement,
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 String argChildElementName,
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 String argAttributeName) {
聽聽聽 return getAttributeValue(argParentElement, argChildElementName, 0, argAttributeName);
聽 }
聽 //***************************************************************************
聽 /**
聽聽 * 鎸囧畾銇椼仧瑕绱犮伄涓仹鎸囧畾銇椼仧闋嗙暘銇瓙瑕佺礌銇睘鎬с伄鍊ゃ倰鍙栧緱銇椼伨銇欍?br />聽聽 * @param聽 argParentElement聽聽聽聽聽聽 瑕绱?br />聽聽 * @param聽 argChildElementName聽聽聽 瀛愯绱犲悕
聽聽 * @param聽 argSpecificationNumber 闋嗙暘
聽聽 * @param聽 argAttributeName聽聽聽聽聽聽 灞炴у悕
聽聽 * @return 灞炴с伄鍊?br />聽聽 */
聽 //***************************************************************************
聽 public static String getAttributeValue(Element argParentElement,
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 String argChildElementName,
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 int argSpecificationNumber,
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 String argAttributeName) {
聽聽聽 Element childElement = getChildElement(argParentElement,
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 argChildElementName,
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 argSpecificationNumber);
聽聽聽 return childElement.getAttribute(argAttributeName);
聽 }
}

]]>