2013-08-08 3 views
0

XML을 구문 분석해야합니다. 지금은 SAX 파서를 사용한 적이 있습니다. 편집하고 끝내서 XML을 작성해야합니다. 이제는 SAX 파서로 어떻게해야합니까? 그 기능을 가지고 있지 않습니다. 나는 어려운 상황에 처해있다. 또한 나는 dom4j와 DOM에 관해 검색했다. 내 코드는 아래와 같습니다.Xml 구문 분석 저장 및 Java에서 만들기

public class XmlBack extends DefaultHandler { 

    public void startElement(String uri, String localName, String qName, 
      Attributes attributes) throws SAXException {   
     if (qName.equalsIgnoreCase("VarGroup")) { 
      varGroupVariables = new HashMap<String, List<VarGroupVariable>>(); 
     }else if (qName.equalsIgnoreCase("Variable")) { 
      varGroupVariable = new VarGroupVariable(); 
      nameAttribute = attributes.getValue("Name"); 
      varGroupVariable.setName(nameAttribute); 
     }else if (qName.equalsIgnoreCase("TYP")) { 
      btype = true; 
     }else if (qName.equalsIgnoreCase("VALUE")) { 
      bvalue = true; 
     }  
    } 
    public void characters(char ch[], int start, int length) 
      throws SAXException { 
     String vtype = null; 

     if (btype) { 
      vtype = new String(ch, start, length); 
      varGroupVariable.setType(vtype); 
      btype = false; 
     } 

     Double value = null; 
     if (bvalue) { 
      String vvalue = new String(ch, start, length); 
      try { 
       value = Double.valueOf(vvalue); 
      } catch (NumberFormatException ne) { 
       value = 0d; 
      } 
      varGroupVariable.setValue(value); 
      bvalue = false; 
     } 
    } 

    @Override 
    public void endElement(String uri, String localName, String qName) 
      throws SAXException { 
     if (qName.equalsIgnoreCase("Variable")) { 
      String varGroupVariableName = varGroupVariable.getName().split("\\.")[0]; 
      String name = varGroupVariableName.substring(0,varGroupVariableName.length() - 1); 
      String name1= varGroupVariableName = varGroupVariable.getName().split("\\.")[1]; 
      System.out.println(name1); 
      List<VarGroupVariable> varGroupVariablesList; 
      if(varGroupVariables.containsKey(name)) { 
       varGroupVariablesList = varGroupVariables.get(name);     
      }else { 
       varGroupVariablesList = new ArrayList<VarGroupVariable>(); 
      } 
      int serial = varGroupVariablesList.size(); 
      varGroupVariable.setSerial(++serial); 
      varGroupVariablesList.add(varGroupVariable);   
      varGroupVariables.put(name, varGroupVariablesList); 
      //System.out.println(name+"\n"); 
      } 
    } 
    private int no = 1; 
    boolean bcore,bmold,bvalue,btype = false; 
    String nameAttribute; 
    Map<String, List<VarGroupVariable>> varGroupVariables; 
    VarGroupVariable varGroupVariable; 
} 
+1

정확한 문제는 무엇입니까? XML을 메모리로 파싱했으면 좋겠다. 값과 구조를 원하는대로 편집/변경 한 다음 작성하십시오. 나는 값과 구조를 변경하고 그것을 써 넣을 수있는 툴을 가지고 있기 때문에 DOM을 더 쉽게 사용할 수 있다고 생각한다. FWIW 나는 Xu를 사용한다 XOM –

+0

답장을 보내 주셔서 감사합니다. 내 문제는 디스플레이 sax 파서를 사용하고 지금은 XML을 만들지 않습니다 지금은 DOM을 사용할 수 있습니다 또는 코드 또는 파서 SAX DOM을 변경해야 할 때까지입니다. – nick

+0

구문 분석 및 XML 파일 작성에 어떤 메소드를 사용해야합니까? JDom, Dom, Sax, Dom4j. 명확한 아이디어를 제공해주십시오. – nick

답변

1

XML이 부당하게 복잡하지 않거나 사용 가능한 스키마가없는 경우가 아니면 가장 쉬운 옵션은 아마도 JAXB입니다. 예를 들어 this과 같은 여러 가지 자습서가 있습니다. 물론 StackOverflow는 JAXB 지식의 좋은 소스이기도합니다.

+0

시간과 도움에 감사드립니다. 그것은 나를 도울 것입니다. – nick