真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

關(guān)于項目自動化測試架構(gòu)的改良計劃-解析XInclude標(biāo)記

因為在test_suite.xml中,我們多處使用了XInclude標(biāo)記,他們會被申明在一個叫"http://www.w3.org/2001/XInclude" 的名字空間中,并且引入部分用xi:include來聲明,我們這個類的作用就是把這些所有的的部分,都用被引入的文件插入和替換掉。

創(chuàng)新互聯(lián)是專業(yè)的文山州網(wǎng)站建設(shè)公司,文山州接單;提供做網(wǎng)站、成都網(wǎng)站設(shè)計,網(wǎng)頁設(shè)計,網(wǎng)站設(shè)計,建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行文山州網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊,希望更多企業(yè)前來合作!

/**
 * This class will handle converting a xinclude+xpointer marked xml file to a normal xml file
 * Because of the shortage of the current jdk ,it only support the xPointer with element instead of NCName
 *@author cwang58
 *@created date: Jun 10, 2013
 */
public class XIncludeConverter {
                                                                                                                                                  
    /**
     * this method will handle change the XInclude+XPointer marked xml as normal xml
     * @param origialXML the original xml which has the xInclude feature
     * @return the parsedXML without the xInclude feature
     */
    public static String convertXInclude2NormalXML(String originalXML)
            throws SAXException,ParserConfigurationException,TransformerConfigurationException,IOException,TransformerException{
          DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
          //open up the namespace aware so that it can recognize the "xi" namespace
          factory.setNamespaceAware(true);
          //let this SAXParser support XInclude
          factory.setXIncludeAware(true);
          //factory.setValidating(true);
          //ignore all the comments added in the source document
          factory.setIgnoringComments(true);
          DocumentBuilder docBuilder = factory.newDocumentBuilder();
          Document doc = docBuilder.parse(new InputSource(new ByteArrayInputStream(originalXML.getBytes("utf-8"))));
          Transformer transformer = TransformerFactory.newInstance().newTransformer();
          //format the output xml string so it support indent and more readable
          transformer.setOutputProperty(OutputKeys.INDENT, "yes");
          //initialize StreamResult with File object to save to file
          StreamResult result = new StreamResult(new StringWriter());
          DOMSource source = new DOMSource(doc);
          transformer.transform(source, result);
          return result.getWriter().toString();
        }
                                                                                                                                                 

這里講一個小插曲,其實,W3C中,XInclude經(jīng)常和Xpointer聯(lián)合起來應(yīng)用的,xpointer可以幫助來定位目標(biāo)文件的某個小片段而不是整個目標(biāo)文件,定位方法可以用element(),或者xpointer(),如果element的話,可以用(/1/2/3)這種方式來定位DOM,或者基于 id,對應(yīng)java的解析框架是xerce,但是非常不幸運(yùn)的是,最新版本的xerce框架只支持element(/1/3/4/5)這種定位,而對于基于schema-id的方式,也就是某個element聲明了id的情況,它沒辦法定位,但是未來可能會支持這個功能。

http://xerces.apache.org/xerces2-j/faq-xinclude.html#faq-8

關(guān)于項目自動化測試架構(gòu)的改良計劃 - 解析XInclude標(biāo)記

基于上述的局限性,我決定只采用xi:include來包含全部文件,然后局部調(diào)整的做法,并且繞過xpointer。

所以實現(xiàn)代碼如上所示,事實上從JDK 1.6開始,他已經(jīng)提供了對XInclude的支持,內(nèi)部是委托給xerce來實現(xiàn)的,這是對應(yīng)架構(gòu)圖的第3-4步驟。


分享題目:關(guān)于項目自動化測試架構(gòu)的改良計劃-解析XInclude標(biāo)記
轉(zhuǎn)載來于:http://weahome.cn/article/jodpic.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部