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

XPath を使用したくない場合 (この方法もおそらく高速です)、子孫をループできます。

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 に答える