2014-06-24 3 views
3

검색 결과를 XML 문서로 반환하는 디렉토리가 있습니다.java에서 XML 요소 내의 속성에 액세스

<directory.person> 
    <person netid="" pidm="" student="" affiliate=""> 
     <picture>no</picture> 
     <name>...</name> 
    </person> 

내가 구문 분석하고 다음 코드를 사용하여 자바를 읽으려고 해요 :

try{ 
     DocumentBuilder db = DocumentBuilderFactory.newInstance().newDocumentBuilder();           
     InputSource is = new InputSource(); 
     is.setCharacterStream(new StringReader(xml)); 
     Document doc = db.parse(is); 
     NodeList nodes = doc.getElementsByTagName("person"); 

     for(int i = 0;i < nodes.getLength(); i++){ 
      Element element = (Element) nodes.item(i); 
      NodeList pidm = element.getElementsByTagName("@pidm"); 
      Element line = (Element)pidm.item(0); 
      value = getCharacterDataFromElement(line); 
      if(value.compareTo("Dana")==0 || value=="Dana") 
       out.println(value); 
     } 
    } 
    catch(Exception e){ 
     out.println(e); 
    } 

제가하는 데 문제는 실제로 "내의 두 번째 줄에 그 pidm 변수에 접근 함께 for "루프. 어떻게해야할지 모르겠다. 기본적으로 pidm이 출력해야하는 것은 반환 된 각 사람에 대한 고유 한 식별자입니다. 나는 jstl이 더 쉬울 것이라는 것을 안다.하지만 이것에 대한 사람들은 그렇게하기를 원하지 않는다.

답변

1

루프의 첫 번째 줄에있는 Element 개체는 이미 <person /> 요소 여야합니다. 당신은 거의가 Element Javadoc

+0

좋아요! 그게 효과가 있었어. API 문서를보고 있었지만 대부분이 방법을 간과했습니다. 감사! – jordaniac89

+0

@ jordaniac89 : 기꺼이 도와주세요. :) – mikeho

2

클래스 org.w3c.dom.Element에는 요소 속성에 액세스하는 여러 가지 메소드가 있습니다.

여기서 가장 간단한 경우는 element.getAttribute("pidm");입니다.

주어진 속성에 대해 이 표시됩니다.

그렇지 않으면 Element의 다른 getAttribute... 방법을 편리하게 탐색 할 수 있습니다.

API here.

1

를 참조

for(int i = 0;i < nodes.getLength(); i++){ 
    Element element = (Element) nodes.item(i); 

    // retrieve the attribute, then get the value 
    Attr pidm = element.getAttributeNode("pidm"); 
    String pidmString = pidm.getValue(); 

    // or get the attribute directly 
    String pidmDirectString = element.getAttribute("pidm"); 

    ... // the rest of your code 
} 

: 그래서 당신은 기준에 대한 특성을 잡을 수 있어야한다

for(int i = 0;i < nodes.getLength(); i++){ 
    Element element = (Element) nodes.item(i); 
    value = elem.getAttributeValue("pidm"); 
} 
1

나는 귀하의 질문에 정확한 이해하면, "pidm는"속성이다 . 이해가 필요하다면 element.getAttribute ("pidm");

관련 문제