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());
}
XPath を使用したくない場合 (この方法もおそらく高速です)、子孫をループできます。
for (Element e : mydoc.getDescendants(Filters.element())) {
if (e.hasAttributes()) {
for (Attribute a : e.getAttributes()) {
a.setName(a.getName().toLowerCase());
}
}
}
ロルフ