我想解析一个 XML 文档并使用 JDOM 将属性名称更改为小写。
例如,我想要以下内容:
<record ID="1" name="Dom" />
<record iD="2" nAmE="Bob" />
成为:
<record id="1" name="Dom" />
<record id="2" name="Bob" />
实现这一目标的最佳方法是什么?
使用 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());
}
}
}
罗尔夫