2013-02-13 89 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。