RT,config_test.xml内容如下:
<?xml version="1.0" encoding="GB2312"?>
<Configurations>
<Value>
<StationOrArea>station</StationOrArea>
<DatabaseIP>11.11.11.111</DatabaseIP>
<DatabasePort>1111</DatabasePort>
<DatabaseName>test</DatabaseName>
<DatabaseUserName>test</DatabaseUserName>
<DatabasePassword>test</DatabasePassword>
<DatabaseSpaceName>test</DatabaseSpaceName>
<StationCode>35005</StationCode>
<StationID>o1</StationID>
<InstitudeCode>QZ</InstitudeCode>
<EpdFilePath>/opt/gather/epddata</EpdFilePath>
<StateFilePath>/opt/gather/statdata</StateFilePath>
<FtpFilePath>/opt/gather/ftpdata</FtpFilePath>
<MemPath>/opt/gather</MemPath>
<ExceptionPath>/opt/gather/exceptiondata</ExceptionPath>
<PublicConfigFile>/opt/test/test_datamanager_config.xml</PublicConfigFile>
<SysLogPath>/opt/gather/logdata</SysLogPath>
<CodeFile>/opt/gather/item.conf</CodeFile>
<RealTimeConnectLimit>99</RealTimeConnectLimit>
<DeviceQueueLimit>1</DeviceQueueLimit>
<RealTimePriority>2</RealTimePriority>
<ValidLimit>10</ValidLimit>
<ReportIP>11.11.11.111</ReportIP>
<ReportPort>9999</ReportPort>
<ShutdownKey>grid</ShutdownKey>
<BufferConfigFile>/opt/gather/buffer.xml</BufferConfigFile>
<TimeConfigFile>/opt/gather/time.xml</TimeConfigFile>
</Value>
</Configurations>
解析代码如下:package readXML;import java.io.IOException;import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;public class ReadXML {
private DocumentBuilderFactory dbf= null;
private DocumentBuilder db = null;
private Document doc = null;
public ReadXML(String file){
try {
dbf = DocumentBuilderFactory.newInstance();
db = dbf.newDocumentBuilder();
doc = db.parse(file);
} catch (ParserConfigurationException e) {
e.printStackTrace();
} catch (SAXException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
} public void getXMLParas(){
Element root = doc.getDocumentElement();
NodeList nodelist = root.getElementsByTagName("Value");
for(int i=0;i<nodelist.getLength();i++){
System.out.println("Value "+(i+1)+" is: "
+nodelist.item(i).getFirstChild().getNodeValue().toString());
}
}
public static void main(String[] args) {
ReadXML readxml = null;
readxml = new ReadXML("c:\\config_test.xml");
readxml.getXMLParas();
}}
目的很显然,就是为了打印XML文件里的所有元素的值
可现在打印结果却是空,请问怎么办?
<?xml version="1.0" encoding="GB2312"?>
<Configurations>
<Value>
<StationOrArea>station</StationOrArea>
<DatabaseIP>11.11.11.111</DatabaseIP>
<DatabasePort>1111</DatabasePort>
<DatabaseName>test</DatabaseName>
<DatabaseUserName>test</DatabaseUserName>
<DatabasePassword>test</DatabasePassword>
<DatabaseSpaceName>test</DatabaseSpaceName>
<StationCode>35005</StationCode>
<StationID>o1</StationID>
<InstitudeCode>QZ</InstitudeCode>
<EpdFilePath>/opt/gather/epddata</EpdFilePath>
<StateFilePath>/opt/gather/statdata</StateFilePath>
<FtpFilePath>/opt/gather/ftpdata</FtpFilePath>
<MemPath>/opt/gather</MemPath>
<ExceptionPath>/opt/gather/exceptiondata</ExceptionPath>
<PublicConfigFile>/opt/test/test_datamanager_config.xml</PublicConfigFile>
<SysLogPath>/opt/gather/logdata</SysLogPath>
<CodeFile>/opt/gather/item.conf</CodeFile>
<RealTimeConnectLimit>99</RealTimeConnectLimit>
<DeviceQueueLimit>1</DeviceQueueLimit>
<RealTimePriority>2</RealTimePriority>
<ValidLimit>10</ValidLimit>
<ReportIP>11.11.11.111</ReportIP>
<ReportPort>9999</ReportPort>
<ShutdownKey>grid</ShutdownKey>
<BufferConfigFile>/opt/gather/buffer.xml</BufferConfigFile>
<TimeConfigFile>/opt/gather/time.xml</TimeConfigFile>
</Value>
</Configurations>
解析代码如下:package readXML;import java.io.IOException;import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;public class ReadXML {
private DocumentBuilderFactory dbf= null;
private DocumentBuilder db = null;
private Document doc = null;
public ReadXML(String file){
try {
dbf = DocumentBuilderFactory.newInstance();
db = dbf.newDocumentBuilder();
doc = db.parse(file);
} catch (ParserConfigurationException e) {
e.printStackTrace();
} catch (SAXException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
} public void getXMLParas(){
Element root = doc.getDocumentElement();
NodeList nodelist = root.getElementsByTagName("Value");
for(int i=0;i<nodelist.getLength();i++){
System.out.println("Value "+(i+1)+" is: "
+nodelist.item(i).getFirstChild().getNodeValue().toString());
}
}
public static void main(String[] args) {
ReadXML readxml = null;
readxml = new ReadXML("c:\\config_test.xml");
readxml.getXMLParas();
}}
目的很显然,就是为了打印XML文件里的所有元素的值
可现在打印结果却是空,请问怎么办?
Element root = doc.getDocumentElement();
System.out.println(root.getNodeName());
Node node = root.getElementsByTagName("Value").item(0);
NodeList nodelist = node.getChildNodes();
System.out.println(nodelist.getLength());
for(int i=0;i<nodelist.getLength();i++){
System.out.println(nodelist.item(i).getNodeName() + " is: "
+nodelist.item(i).getTextContent());
}
}
Configurations
#text is: StationOrArea is: station
#text is: DatabaseIP is: 11.11.11.111
#text is: ……
就是下边总有一个#text is: 这是哪里来的呢?
Element root = doc.getDocumentElement();
System.out.println(root.getNodeName());
Node node = root.getElementsByTagName("Value").item(0);
NodeList nodelist = node.getChildNodes();
System.out.println(nodelist.getLength());
for(int i=0;i<nodelist.getLength();i++){
if(nodelist.item(i).getNodeType()!=Node.TEXT_NODE)此处判断
System.out.println(nodelist.item(i).getNodeName() + " is: "
+nodelist.item(i).getTextContent());
}
}
我想问问如果我的XML文件中将<Value></Value>去掉,然后怎么解析各个元素及值呢?
及XML文件变为<?xml version="1.0" encoding="GB2312"?>
<Configurations> <StationOrArea>station </StationOrArea>
<DatabaseIP>11.11.11.111 </DatabaseIP>
<DatabasePort>1111 </DatabasePort>
<DatabaseName>test </DatabaseName>
<DatabaseUserName>test </DatabaseUserName>
<DatabasePassword>test </DatabasePassword>
<DatabaseSpaceName>test </DatabaseSpaceName>
<StationCode>35005 </StationCode>
<StationID>o1 </StationID>
<InstitudeCode>QZ </InstitudeCode>
<EpdFilePath>/opt/gather/epddata </EpdFilePath>
<StateFilePath>/opt/gather/statdata </StateFilePath>
<FtpFilePath>/opt/gather/ftpdata </FtpFilePath>
<MemPath>/opt/gather </MemPath>
<ExceptionPath>/opt/gather/exceptiondata </ExceptionPath>
<PublicConfigFile>/opt/test/test_datamanager_config.xml </PublicConfigFile>
<SysLogPath>/opt/gather/logdata </SysLogPath>
<CodeFile>/opt/gather/item.conf </CodeFile>
<RealTimeConnectLimit>99 </RealTimeConnectLimit>
<DeviceQueueLimit>1 </DeviceQueueLimit>
<RealTimePriority>2 </RealTimePriority>
<ValidLimit>10 </ValidLimit>
<ReportIP>11.11.11.111 </ReportIP>
<ReportPort>9999 </ReportPort>
<ShutdownKey>grid </ShutdownKey>
<BufferConfigFile>/opt/gather/buffer.xml </BufferConfigFile>
<TimeConfigFile>/opt/gather/time.xml </TimeConfigFile> </Configurations>
Element root = doc.getDocumentElement();
System.out.println(root.getNodeName());
NodeList nodelist = root.getChildNodes();
System.out.println(nodelist.getLength());
for(int i=0;i<nodelist.getLength();i++){
if(nodelist.item(i).getNodeType()!=Node.TEXT_NODE)
System.out.println(nodelist.item(i).getNodeName() + " is: "
+nodelist.item(i).getTextContent());
}
}