0

DOM を使用して Java で XML を読むのは初めてです。この XML を DOM で読み取るための簡単なコード手順を教えてもらえますか?

ここに私のXMLがあります:

<DataSet xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:noNamespaceSchemaLocation='datamartschema.1.3.xsd'>
<DataStream title='QUESTIONNAIRE'>
<Record>
<TransactionDate>2014-05-28T14:17:31.2186777-06:00</TransactionDate><SubType>xhaksdj</SubType>
<IntegerValue title='ComponentID'>11111</IntegerValue>
</Record><Record>
<TransactionDate>2014-05-28T14:17:31.2186777-06:00</TransactionDate><SubType>jhgjhg</SubType>
<IntegerValue title='ComponentID'>11111</IntegerValue>
</Record>
</DataStream>
</DataSet>

この XML では、DataStream 値と Record 値を読み取る必要があります。私の期待される出力は

DataStream=QUESTIONNAIRE and my records are 
<TransactionDate>2014-05-28T14:17:31.2186777-06:00</TransactionDate><SubType>xhaksdj</SubType><IntegerValue title='ComponentID'>11111</IntegerValue><TransactionDate>2014-05-28T14:17:31.2186777-06:00</TransactionDate><SubType>jhgjhg</SubType><IntegerValue title='ComponentID'>11111</IntegerValue>

この出力を取得するにはどうすればよいですか? 私は自分で試しましたが、上記のようにレコードを出力できません。上記の出力に存在するタグなしで出力を取得します。この行を使用して出力を取得しています。しかし、正しい出力が得られません。また、この XML からデータストリーム値を読み取る方法は? 親切に私を助けてください。

これは私のコードスニペットです

NodeList datasetallRecords = indElement.getElementsByTagName("Record");
for (int y = 0; y < datasetallRecords.getLength(); y++) {
    Element recordsElement = (Element) datasetallRecords.item(y);

    recordXMl = recordXMl + recordsElement.getTextContent();
    String d = datasetallRecords.item(y).getTextContent();
    if (recordsElement.getTagName().equalsIgnoreCase("SubType")) {
        lsDataStreamSubTypes.add(recordsElement.getTextContent());
    }
    recordCount = y;
}
4

3 に答える 3

0

ビルダーの新しいインスタンスを作成すると、DataStreamを取得できます。次の ようになります。

 Element root = document.getDocumentElement();
 NodeList dataStreams = root.getElementsByTagName("DataStream");

次に、このリストをスローして、次のようなすべての情報を取得します。

for (int i = 0; i < dataStreams.lenght(); i++) {
         Element dataStream = (Element) dataStreams.item(i);
         if (dataStream.getNodeType() == Element.ELEMENT_NODE) {
                     String title = dataStream.getAttributes()
                                              .getNamedItem("title").getTextContent();
         }
}
于 2013-06-10T09:28:39.940 に答える
0

getTextContent()「レコード」ノードでの呼び出しは、そのノードとその子孫のテキスト コンテンツのみを返すため、タグを取得していません。

ノードも必要な場合は、XML を手動で処理する必要があります。要素名の読み上げ方法など、DOM モードでのドキュメントの処理について説明しているDOM チュートリアルをご覧ください。

于 2013-06-10T09:28:21.423 に答える