- PR -

階層の深いXMLを効率よく取得する方法

1
投稿者投稿内容
tomo
会議室デビュー日: 2002/01/23
投稿数: 1
投稿日時: 2002-01-23 16:46
はじめまして。XML初心者です。

DOMで取得した情報よりgetElementsByTagNameでノードリストを取得しました。
そのノードリストの属性を判断してさらに配下ノードリストを絞り込みたいと思っています。
単純に下の階層を見てあげれば絞り込めるのですが取得したい情報はどの階層にあるかは
決められていません。
そのため、項目によって下の階層さらに下の階層と見なければいけません。

Document doc = db.parse(new FileInputStream(infname));
NodeList lst = doc.getElementsByTagName("Component");

for(int i=0; i<lst.getLength(); i++) {
Node n = lst.item(i);

NamedNodeMap attrlist = n.getAttributes();
Node attr = attrlist.getNamedItem("name");

if(attr.getNodeValue().indexOf("jLabel") != -1) {
JLabelEdit label = new JLabelEdit();
label.label_edit(n);
}
if(attr.getNodeValue().indexOf("jText") != -1) {
JTextEdit text = new JTextEdit();
text.text_edit(n);
}
}

class JLabelEdit
{
public void label_edit(Node n)
{
for(Node ch = n.getFirstChild(); ch != null; ch = ch.getNextSibling()) {
if(ch.getNodeName().indexOf("Properties") != -1 ) {
label_properties_edit(ch);
}
if(ch.getNodeName().indexOf("Constraints") != -1) {
label_constraints_edit(ch);
}
}
}
private void label_properties_edit(Node n, int i)
{
・・・
}
private void label_constraints_edit(Node n, int i)
{
・・・
}
}
class JTextEdit
{
・・・
}

上記のlabel_editに入力したノードでgetElementsByTagNameのようにノードリストを洗い出せないですか?ということなのですが・・・。

ちがう方法でもかまいません。
何か効率のよい方法及びメソッドなどあったら教えていただきたいのです。

よろしくお願いします。
MMX
ぬし
会議室デビュー日: 2001/10/26
投稿数: 861
投稿日時: 2002-01-25 09:41
//xxx などの XPath の指定できるDOMのメソッドを探すだけでは?
1

スキルアップ/キャリアアップ(JOB@IT)