2012-07-10 71 views
0

我需要解析XML,并使用JDOM将所有属性名称更改为小写。有没有一个很好的方法来做到这一点?JDOM - 降低所有属性名称

所以,如果我有:

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

就变成:

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

回答

0

使用JDOM 2.0.2你很可能使用XPath和循环的名称。问题是,如果元素有多个属性可以解析为相同的小写名称,比如'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()); 
     } 
    } 
} 

罗尔夫