2

私は次のようにXMLファイルを解析しています:

<ROW>
<INDUSTRY_ID>1</INDUSTRY_ID>
<ID>314</ID>
</ROW>

これが私のコードです:

NodeList titleList = list.getElementsByTagName("ROW");
Log.w("nodeName is ",titleList.item(0).getChildNodes().item(1).getFirstChild().getNodeName());
Log.w("nodeValue is ",titleList.item(0).getChildNodes().item(1).getFirstChild().getNodeName());

タグとタグの内容を正常に取得できます。つまり、それぞれ「1」と「314」を取得しました。ただし、getNodeName()から#textを取得しました。私も試しました:

titleList.item(0).getChildNodes().item(1).getFirstChild().getNodeName().toString()

しかし、私はまだ#textを取得していました。私の質問は、代わりに「INDUSTRY_ID」と「ID」を取得するにはどうすればよいですか?

4

1 に答える 1

4

テキストノードに移動しました。テキストノードには技術的に名前はなく、(テキスト)値だけがあります。あなたはこれを求めている:

NodeList titleList = list.getElementsByTagName("ROW");
Log.w("nodeName is ",titleList.item(0).getChildNodes().item(1).getNodeName());
Log.w("nodeValue is ",titleList.item(0).getChildNodes().item(3).getNodeName());

ただし、これは空白のフォーマットに依存するため、要素ノードと値にアクセスするための非常に堅牢ではない方法です。Xpathを使用して、必要な要素のリストを取得し、それぞれの名前と値にアクセスします

XPath xp = XPathFactory.newInstance();
NodeList elements = (NodeList) xp.evaluate(doc, "//ROW/*", XPathConstants.NODESET); 
for(int i=0; i < elements.getLength(); ++i) {
    String name = elements.itemt(i).getNodeName();
    String value = elements.itemt(i).getTextContent();
} 
于 2011-08-28T19:48:00.373 に答える