如何从元素中删除的命名空间(how to remove the namespaces from th

2019-10-19 04:14发布

我与org.w3c.xml Java库工作,遇到执行一些任务的几个困难:

  1. 我有Element对象; 我怎样才能把它和前辈命名空间?
  2. 我怎样才能创建一个没有命名空间文档? 我努力了

     DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance(); docBuilderFactory.setNamespaceAware(false); DocumentBuilder docBuilder = docBuilderFactory.newDocumentBuilder(); Document doc = docBuilder.parse (new File("C:/Temp/XMLFiles/"+fileName+".xml")); 

    虽然看起来有前途的,它并没有真正发挥作用。 我仍然得到与命名空间的文档。

  3. 如何创建从一个元素的文件?

     Document doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument(); doc.adoptNode(dataDefinition); 

    其中dataDefinition是一个元素,但它没有工作; 我究竟做错了什么?

Answer 1:

尝试用下面的转化它XSL :

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="no"/>

<xsl:template match="/|comment()|processing-instruction()">
    <xsl:copy>
      <xsl:apply-templates/>
    </xsl:copy>
</xsl:template>

<xsl:template match="*">
    <xsl:element name="{local-name()}">
      <xsl:apply-templates select="@*|node()"/>
    </xsl:element>
</xsl:template>

<xsl:template match="@*">
    <xsl:attribute name="{local-name()}">
      <xsl:value-of select="."/>
    </xsl:attribute>
</xsl:template>
</xsl:stylesheet>

Transformer xformer = TransformerFactory.newInstance().newTransformer(new StreamSource(new FileInputStream("xform.xsl")));
StringWriter writer = new StringWriter();
xformer.transform(new StreamSource(new FileInputStream("input.xml")), new StreamResult(writer));
System.out.println(writer.toString());


文章来源: how to remove the namespaces from the Element