0

DOMパーサーを使用して、特定の要素の属性値で子ノードの値を読み取ろうとしています..私のxmlファイル:

    <?xml version="1.0" encoding="UTF-8"?>
<RootNode>
    <SubNode Sid="1">
        <title>some text</title>
        <data dId="1">some text</data>
        <data dId="2">some text</data>
        <ExData>1</ExData>
    </SubNode>
    <SubNode Sid="2">
        <title>some text</title>
        <data dId="1">some text</data>
        <data dId="2">some text</data>
        <data dId="3">some text</data>
        <data dId="4">some text</data>
        <data dId="5">some text</data>
        <ExData>1</ExData>
    </SubNode>
    <SubNode Sid="3">
        <title>some text</title>
        <data dId="1">some text</data>
        <data dId="2">some text</data>
        <data dId="3">some text</data>
        <ExData>1</ExData>
    </SubNode>
</RootNode>

私はdata1 のノード値を読み取ろうとしていますSubNode。私は以下のコードでチェックしました:

private void parseDocument()
{
    Element docEle = dom.getDocumentElement();
    NodeList nl = docEle.getElementsByTagName("SubNode");
    if(nl!= null && nl.getLength()>0)
    {
        for(int i=0; i<nl.getLength();i++)
        {
            Element el = (Element)nl.item(i);
            InfoBean que = getInfoBean(el);
            InfoBeanSet.add(que);
        }
    }
}
private InfoBean getInfoBean(Element el)
{
    int sId = Integer.parseInt(el.getAttribute("Sid"));
    String title = getTextValue(el,"title");    

    NodeList SingleOptionNode = el.getElementsByTagName("data");
    int nodeLen = SingleOptionNode.getLength();
    if(SingleOptionNode != null && nodeLen>0)
    {
        for(int i=0; i<nodeLen; i++)
        {
            Element el1 = (Element)SingleOptionNode.item(i);
            NodeList nextOption = el1.getChildNodes();
            Node currentNode = (Node) nextOption.item(0);
            int dId = Integer.parseInt(el1.getAttribute("dId"));
            String data = currentNode.getNodeValue();
            opt.add(new Option(data, dId));
        }
    }
    String ExData = getTextValue(el,"ExData");
    InfoBean ifb = new InfoBean(sId,title,opt,ExData);
    return ifb;
}

3 つのサブノードすべてのデータ ノード値を提供します。属性値を使用して 1 つの SubNode 要素の子ノード値を読み取る方法。すべてのデータ ノード値を取得している理由を知ることはできますか? 1 つの SubNode 要素のデータ ノード値を読み取る方法のコード例を入手できますか?

4

1 に答える 1

1

この行により、ノード リスト内のすべての SubNode 要素にループが導入されます。

   for(int i=0; i<nl.getLength();i++)

そうしないようにしてください。

于 2012-09-13T19:36:07.883 に答える