[英]Reading XML in java using DOM
我是刚开始使用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;
}
首先,您需要创建一个像这样的节点
Node nNode = datasetallRecords.item(y);
然后像这样的元素
Element eElement = (Element) nNode;
现在,您可以使用getelementbyid和getnodevalue方法开始从元素中获取值。
您没有得到标签,因为对“记录”节点上的getTextContent()
的调用将仅返回该节点及其后代的文本内容。
如果还需要节点,则必须手动处理XML。 看一下DOM教程,它很好地介绍了如何在DOM模式下处理文档,包括如何读取元素名称。
当您创建builder的新实例时,您可以获取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();
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.