Я пытаюсь удалить пространства имен в документе xml и получаю следующую ошибку:
ОШИБКА: 'Префикс "car" для элемента "car: name" не связан.'ОШИБКА: 'com.sun.org.apache.xml.internal.utils.WrappedRuntimeException: префикс "car" для элемента "car: name" не связан.'
Вот мой xml-файл:
<car:name>Toyota Corolla</car:name>
<car:year>2000</car:year>
Вот мой removeNs.xslt
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes" />
<xsl:variable name="vLowercase" select="'abcdefghijklmnopqrstuvwxyz'" />
<xsl:variable name="vUppercase" select="'ABCDEFGHIJKLMNOPQRSTUVWXYZ'" />
<xsl:template match="*">
<xsl:element
name="{concat(translate(substring(local-name(), 1, 1),
$vUppercase, $vLowercase),
substring(local-name(), 2))}">
<xsl:apply-templates />
</xsl:element>
</xsl:template>
<xsl:template match="@*">
<xsl:attribute name="{local-name(.)}">
<xsl:value-of select="." />
</xsl:attribute>
</xsl:template>
</xsl:stylesheet>
и мой метод java:
private static String stripNameSpaces(String inXml) {
String outputXml = "";
try {
StringWriter writer = new StringWriter();
TransformerFactory factory = TransformerFactory.newInstance();
Source xslt = new StreamSource(new File("./src/main/resources/removeNs.xslt"));
Transformer transformer = factory.newTransformer(xslt);
Source text = new StreamSource(new StringReader(inXml));
transformer.transform(text, new StreamResult(writer));
outputXml = writer.toString();
} catch (TransformerConfigurationException tcEx) {
tcEx.printStackTrace();
return tcEx.getMessage();
} catch (TransformerException tEx) {
tEx.printStackTrace();
return tEx.getMessage();
}
return outputXml;
}
Я предполагаю, что мне нужно что-то добавить, чтобы удалитьNs.xslt, но неудалось выяснить что.Если бы кто-то мог помочь мне с этим, я бы очень признателен