2012-07-10 4 views
0

XML을 구문 분석하고 JDOM을 사용하여 모든 속성 이름을 소문자로 변경해야합니다. 이것을 할 수있는 좋은 방법이 있습니까?JDOM - 모든 속성 이름 lower 케이싱

내가 가진 그래서 경우 :이된다

<record ID="1" name="Dom" /> 
<record iD="2" nAmE="Bob" /> 

:

<record id="1" name="Dom" /> 
<record id="2" name="Bob" /> 

답변

0

를 JDOM은 당신이 아마하는 XPath, 루프 이름을 사용할 수 있습니다 2.0.2 사용. 문제는 예를 들어 요소에 'ID'와 'ID'와 같은 소문자 이름으로 해석되는 여러 속성이있는 경우 충돌이 발생할 수 있다는 것입니다. 감당할 필요가 없다.

(만 노 네임 스페이스 네임 스페이스 특성을 반환합니다) 같은 일부 코드보십시오 :

XPathExpression<Attribute> xp = XPathFactory.instance().compile("//@*", Filters.attribute()); 
for (Attribute a : xp.evaluate(mydoc)) { 
    a.setName(a.getName().toLowerCase()); 
} 

것은 (이 방법은 아마 빨리도) XPath를 사용하지 않으려는 경우, 수 루프 후손을 :

for (Element e : mydoc.getDescendants(Filters.element())) { 
    if (e.hasAttributes()) { 
     for (Attribute a : e.getAttributes()) { 
      a.setName(a.getName().toLowerCase()); 
     } 
    } 
} 

롤프