2011-10-06 4 views
0

내 Document 객체를 파싱하려고합니다.Document 개체를 구문 분석하는 동안 멈추지 않으시겠습니까?

<message> 
<header> 
<messageType>snmp</messageType> 
<sendFrom>localhost</sendFrom> 
<hostName>localhost</hostName> 
<sendTo>192.168.0.15</sendTo> 
<receiverName>receiverHost</receiverName> 
<date>06/10/2011 17:34:55</date> 
</header> 
<body> 
<snmpType>set</snmpType> 
<ip>127.0.0.1</ip> 
<community>public</community> 
<variables> 
    <variableBinding> 
    <variable>TechDive.in</variable> 
    <OID>1.3.6.1.4.1.8072.3.2.10</OID> 
    </variableBinding> 
    <variableBinding> 
    <variable>TechDive.in</variable> 
    <OID>1.3.6.1.4.1.8072.3.2.10</OID> 
    </variableBinding> 
    <variableBinding> 
    <variable>TechDive.in</variable> 
    <OID>1.3.6.1.4.1.8072.3.2.10</OID> 
    </variableBinding> 
    <variableBinding> 
    <variable>TechDive.in</variable> 
    <OID>1.3.6.1.4.1.8072.3.2.10</OID> 
    </variableBinding> 
    </variables> 
    </body> 
</message> 

은 내가 XML 파싱에서 멍청한 놈 때문에 <variables> 아래에있는 <variableBinding>의 오프 모두, 난 정말 그것에 대해 박히 싶어.

다음과 같은 함수를 작성하려고합니다.

<variableBinding>을 얻도록 도와 줄 수 있습니까?

는 SAX 파서가 사용하기에 좋을 것 같은 모든

답변

2

이 추천했습니다 : 나는 사람들이 XML을 통해 그들의 방법을 짐승 - 강제 볼 때마다 싫증이 나다

public Vector<VariableBinding> getVariables(Document document){ 

Vector<VariableBinding> variables = new Vector<VariableBinding>(); 

Element root = document.getRootElement(); 
Element body = root.getChild("body"); 
Element oidsElement = body.getChild("variables"); 

for (Object ovb: oidsElement.getChildren("variableBinding")) { 

    Element vb = (Element) ovb; 
    Variable var = new OctetString(vb.getChild("OID").getText()); 
    OID oidObj = new OID(vb.getChild("variable").getText()); 

    VariableBinding v = new VariableBinding(oidObj,var); 
    variables.add(v); 
} 
return variables; 
} 
4

당신이 XPath를 사용하여 생각 해 봤나 낫다?

//variableBinding은 모든 variableBinding 요소를 선택합니다.

는 예컨대 :

당신이 뭔가를 할 필요가
XPathFactory factory = XPathFactory.newInstance(); 
XPath xpath = factory.newXPath(); 
XPathExpression expr = xpath.compile("//variableBinding"); 

Object result = expr.evaluate(doc, XPathConstants.NODESET); 

NodeList nodes = (NodeList) result; 
for (int i = 0; i < nodes.getLength(); i++) { 
    ... 
} 
+2

; 나를 미치게한다! –

관련 문제