Java论坛网»Java技术»高手请进~~急 ~在线等~
高手请进~~急 ~在线等~
问?:
请问如何解析xml里的cdata内容~~希望给上详细代码~~~跪谢~~~~~~~~~~
答!: 1:
看什么解析器了,有的解析器直接转换成Text对象,有的生成CDATASection对象
答!: 2:
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>
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>
答!: 3:
<?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
<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
答!: 4:
直接取<SvcCont>的文本值啊,然后不就弄出来了?
答!: 5:
能详细点吗?
答!: 6:
感觉要把cdata中的
<?xml version="1.0" encoding="UTF-8"?>
<OrgRegRsp>
<SessionID>920B8FA334297730A8881721FD6FB946</SessionID>
<TimeOut>20000</TimeOut>
</OrgRegRsp>
数据取出来然后再用解析xml文件方法再解析一次才能够得到
等待高手的方法
<?xml version="1.0" encoding="UTF-8"?>
<OrgRegRsp>
<SessionID>920B8FA334297730A8881721FD6FB946</SessionID>
<TimeOut>20000</TimeOut>
</OrgRegRsp>
数据取出来然后再用解析xml文件方法再解析一次才能够得到
等待高手的方法
答!: 7:
顶~等待牛人们的好代码
答!: 8:
文件
<?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);
<?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);
相关JAVA教程:
请教一个关于jDialog的问题(模态)
Swing编程,如何实现窗体的打开和关闭!
JFrame A中打开B,怎样让A不可用?
Swing编程,如何实现窗体的打开和关闭
请问哪有JSF插件 for Dreamweaver正式版下载?
iframe与Action端的通信
struts 问题
有关net.sf.ehcache.config.Configuration的疑问!
请教关于url乱码问题.
Graphics错误Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
hibernate保存后返回主键
复合主键更新问题,在线等