高手请进~~急 ~在线等~ 看什么解析器了,有的解析器直接转换成Text对象,有的生成CDATASection对象 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 JDOM解析: SAXBuilder sax = new SAXBuilder(); try { Document doc = sax.build("XML文件路径"); Element ele = doc.getRootElement(); logger.info("得到了根元素:" + ele.getName()); List list = ele.getChildren("factory-str-content"); //遍历整个XML文件,把内容按key-value对放进Hashtable里 Iterator it = list.iterator(); while (it.hasNext()) { Element element = (Element) it.next(); String key=element.getChild("content-key").getTextTrim(); String value=element.getChild("content-value").getTextTrim(); //存进Hashtable BusinessFactoryName.factoryname.put(key,value); } logger.info("解析businessfactory.properties文件完成......"); } catch (Exception ex) { logger.info("BusinessFactory_XML异常......"); ex.printStackTrace(); }=============================XML文件结构=============================<?xml version="1.0" encoding="gbk"?><factory-str> <factory-str-content> <discription>登陆业务类生产工厂类名</discription> <content-key>LOGIN_FACTORY</content-key> <content-value>factory.LoginFactory</content-value> </factory-str-content> <factory-str-content> <discription>登陆业务类生产工厂类名</discription> <content-key>CHQBUSINESS_FACTORY</content-key> <content-value>factory.ChqBusinessFactory</content-value> </factory-str-content></factory-str> <?xml version="1.0" encoding="UTF-8" ?> <UIP> <OrigDomain>BOSS</OrigDomain> <HomeDomain>YDZJ</HomeDomain> <SvcCont>- <![CDATA[ <?xml version="1.0" encoding="UTF-8"?><OrgRegRsp> <SessionID>920B8FA334297730A8881721FD6FB946</SessionID> <TimeOut>20000</TimeOut></OrgRegRsp> ]]> </SvcCont></UIP>这样格式的xml怎么解吸出来 我只想要cdata里的sessionid 直接取<SvcCont>的文本值啊,然后不就弄出来了? 感觉要把cdata中的<?xml version="1.0" encoding="UTF-8"?><OrgRegRsp> <SessionID>920B8FA334297730A8881721FD6FB946</SessionID> <TimeOut>20000</TimeOut></OrgRegRsp>数据取出来然后再用解析xml文件方法再解析一次才能够得到等待高手的方法 文件<?xml version="1.0" encoding="UTF-8"?> <UIP> <OrigDomain>BOSS</OrigDomain> <HomeDomain>YDZJ</HomeDomain> <SvcCont><![CDATA[<?xml version="1.0" encoding="UTF-8"?><OrgRegRsp> <SessionID>920B8FA334297730A8881721FD6FB946</SessionID> <TimeOut>20000</TimeOut></OrgRegRsp>]]></SvcCont></UIP>解决办法//get CDATA contentDocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();DocumentBuilder builder = factory.newDocumentBuilder();InputSource inputSource = new InputSource("D:/PROJECT/STUDY/SCDJWS/xml/test.xml");Document document = builder.parse(inputSource);Element root = document.getDocumentElement(); String content = (root.getElementsByTagName("SvcCont")).item(0).getTextContent();//get session idInputStream inpuStream = new ByteArrayInputStream(content.getBytes()); Document documentCDATA = builder.parse(new InputSource(inpuStream));Element rootCDATA = documentCDATA.getDocumentElement(); String SessionID = (rootCDATA.getElementsByTagName("SessionID")).item(0).getTextContent();System.out.println(SessionID); Struts+Spring+Hibernate问题 java中如何导入导出excel呢 请教hibernate保存图片问题 谁能帮我看下这段SQL语句到底用的什么语法? select标签引用list报错 ,求大神!!! JavaScript的include问题(周一晚上结帖) 问一个用axis调用用.net实现的webservice的问题, jboss与j2eesdk 是不是包含的关系? one to many relationship in three table XML与JAVA结合 DAO初学者问题 急,c3p0配置出错
SAXBuilder sax = new SAXBuilder();
try {
Document doc = sax.build("XML文件路径");
Element ele = doc.getRootElement();
logger.info("得到了根元素:" + ele.getName());
List list = ele.getChildren("factory-str-content");
//遍历整个XML文件,把内容按key-value对放进Hashtable里
Iterator it = list.iterator();
while (it.hasNext()) { Element element = (Element) it.next();
String key=element.getChild("content-key").getTextTrim();
String value=element.getChild("content-value").getTextTrim();
//存进Hashtable
BusinessFactoryName.factoryname.put(key,value);
}
logger.info("解析businessfactory.properties文件完成......");
}
catch (Exception ex) {
logger.info("BusinessFactory_XML异常......");
ex.printStackTrace();
}
=============================
XML文件结构
=============================
<?xml version="1.0" encoding="gbk"?>
<factory-str>
<factory-str-content>
<discription>登陆业务类生产工厂类名</discription>
<content-key>LOGIN_FACTORY</content-key>
<content-value>factory.LoginFactory</content-value>
</factory-str-content>
<factory-str-content>
<discription>登陆业务类生产工厂类名</discription>
<content-key>CHQBUSINESS_FACTORY</content-key>
<content-value>factory.ChqBusinessFactory</content-value>
</factory-str-content>
</factory-str>
<UIP>
<OrigDomain>BOSS</OrigDomain>
<HomeDomain>YDZJ</HomeDomain>
<SvcCont>
- <![CDATA[
<?xml version="1.0" encoding="UTF-8"?>
<OrgRegRsp>
<SessionID>920B8FA334297730A8881721FD6FB946</SessionID>
<TimeOut>20000</TimeOut>
</OrgRegRsp>
]]>
</SvcCont>
</UIP>
这样格式的xml怎么解吸出来 我只想要cdata里的sessionid
<?xml version="1.0" encoding="UTF-8"?>
<OrgRegRsp>
<SessionID>920B8FA334297730A8881721FD6FB946</SessionID>
<TimeOut>20000</TimeOut>
</OrgRegRsp>
数据取出来然后再用解析xml文件方法再解析一次才能够得到等待高手的方法
<?xml version="1.0" encoding="UTF-8"?>
<UIP>
<OrigDomain>BOSS</OrigDomain>
<HomeDomain>YDZJ</HomeDomain>
<SvcCont><![CDATA[<?xml version="1.0" encoding="UTF-8"?>
<OrgRegRsp>
<SessionID>920B8FA334297730A8881721FD6FB946</SessionID>
<TimeOut>20000</TimeOut>
</OrgRegRsp>]]></SvcCont>
</UIP>解决办法
//get CDATA content
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
InputSource inputSource = new InputSource("D:/PROJECT/STUDY/SCDJWS/xml/test.xml");
Document document = builder.parse(inputSource);
Element root = document.getDocumentElement();
String content = (root.getElementsByTagName("SvcCont")).item(0).getTextContent();//get session id
InputStream inpuStream = new ByteArrayInputStream(content.getBytes());
Document documentCDATA = builder.parse(new InputSource(inpuStream));
Element rootCDATA = documentCDATA.getDocumentElement();
String SessionID = (rootCDATA.getElementsByTagName("SessionID")).item(0).getTextContent();
System.out.println(SessionID);