0

我想解析一个 XML 文档并使用 JDOM 将属性名称更改为小写。

例如,我想要以下内容:

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

成为:

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

实现这一目标的最佳方法是什么?

4

1 回答 1

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());
}

如果您不想使用 XPaths(这种方式也可能更快),您可以循环后代:

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

罗尔夫

于 2012-07-10T01:24:36.363 回答