【问题标题】:Make all attribute names lowercase using JDOM使用 JDOM 使所有属性名称小写
【发布时间】:2012-07-09 10:59:05
【问题描述】:
我想解析一个 XML 文档并使用 JDOM 将属性名称更改为小写。
例如,我想要以下内容:
<record ID="1" name="Dom" />
<record iD="2" nAmE="Bob" />
变成:
<record id="1" name="Dom" />
<record id="2" name="Bob" />
实现这一目标的最佳方法是什么?
【问题讨论】:
标签:
java
xml
parsing
lowercase
jdom
【解决方案1】:
使用 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());
}
如果你不想使用 XPaths(这种方式也可能更快),你可以循环后代:
for (Element e : mydoc.getDescendants(Filters.element())) {
if (e.hasAttributes()) {
for (Attribute a : e.getAttributes()) {
a.setName(a.getName().toLowerCase());
}
}
}
罗尔夫