2013-02-13 90 views
0

我有兩個Java項目副本。避免隨機添加xmlns屬性

運行此方法後:

private void editArtifactWSDL() { 
    try { 
     File outputfile = new File(
     "C:\\WorkSpace\\CMU\\WebContent\\WEB-INF\\bpelfiles\\process\\Artifacts.wsdl"); 

     File skeletonFile = new File(
     "C:\\WorkSpace\\CMU\\WebContent\\WEB-INF\\bpelfiles\\SkeletonArtifacts.wsdl"); 

     DocumentBuilderFactory docFactory = DocumentBuilderFactory 
     .newInstance(); 
     DocumentBuilder docBuilder = docFactory.newDocumentBuilder(); 

     Document doc = docBuilder.parse(skeletonFile); 

     Element definitionsElement = doc.getDocumentElement(); 

     // xmlns attributes 
     editDefinitionsElementToArtifact(doc, definitionsElement); 

     // partnerLinkType elements 
     appendPartnerLinkTypeElementsToArtifact(doc, definitionsElement); 

     // import elements 
     appendImportElementsToArtifact(doc, definitionsElement); 

     // write the content into xml file 
     TransformerFactory transformerFactory = TransformerFactory 
     .newInstance(); 
     Transformer transformer = transformerFactory.newTransformer(); 
     DOMSource source = new DOMSource(doc); 
     StreamResult result = new StreamResult(outputfile); 

     transformer.setOutputProperty(OutputKeys.INDENT, "yes"); 
     transformer.setOutputProperty(
     "{http://xml.apache.org/xslt}indent-amount", "2"); 
     transformer.transform(source, result); 

     System.out.println("Artifact.wsdl saved!"); 

     } catch (ParserConfigurationException pce) { 
     pce.printStackTrace(); 
     } catch (TransformerException tfe) { 
     tfe.printStackTrace(); 
     } catch (SAXException sxe) { 
     sxe.printStackTrace(); 
     } catch (IOException ioe) { 
     ioe.printStackTrace(); 
    } 
} 
的項目之一

我得到一個 「乾淨」 Artifacts.wsdl。在另一個項目中我添加了一些元素xmlns=""

的SkeletonArtifacts.wsdl是exacly相同(上http://www.diffnow.com/相比)

那麼什麼可以爲這個隨機的行爲的原因,我擺脫了的xmlns屬性?

回答

0

我已經做了DocumentFactory NameSpaceAware以及與下面的代碼使我DocumentBuilder NameSpaceAware:現在

docFactory.setNamespaceAware(true); 

xmlns=""屬性已dissapeared。

我仍然不明白爲什麼這是隨機發生的。即使其DocumentBuilder不是NameSpaceAware,其他項目也不會添加xmlns=""

對此的任何解釋仍然是歡迎。

編輯:

設置NameSpaceAware後,我意識到parsig後添加的元素仍然有xmlns=""

我認爲在JRE7中存在Transfomer類的衝突,並且在項目中添加了用於集成ODE的SAXON jars。