我是使用DOM在Java中读取XML的新手。有人可以通过简单的代码步骤帮助我在DOM中读取这个XML吗?
这是我的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;
}
答案 0 :(得分:0)
首先,您需要创建一个像这样的节点
Node nNode = datasetallRecords.item(y);
然后像这样的元素
Element eElement = (Element) nNode;
现在您可以使用getelementbyid和getnodevalue方法开始从元素中获取值。
答案 1 :(得分:0)
您没有收到代码,因为“记录”节点上对getTextContent()
的调用将仅返回 该节点及其后代的文本内容。
如果您还需要节点,则必须手动处理XML。看看DOM tutorial它涵盖了如何在DOM模式下处理文档,包括如何读出元素名称。
答案 2 :(得分: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();
}
}