看什么解析器了,有的解析器直接转换成Text对象,有的生成CDATASection对象

解决方案 »

  1.   

    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>
      

  2.   

    <?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
      

  3.   

    直接取<SvcCont>的文本值啊,然后不就弄出来了?
      

  4.   

    感觉要把cdata中的
    <?xml version="1.0" encoding="UTF-8"?>
    <OrgRegRsp>
      <SessionID>920B8FA334297730A8881721FD6FB946</SessionID>
      <TimeOut>20000</TimeOut>
    </OrgRegRsp>
    数据取出来然后再用解析xml文件方法再解析一次才能够得到等待高手的方法
      

  5.   

    文件
    <?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);