使用XML DOM添加命名空间前缀XML字符串 [英] Adding namespace prefix XML String using XML DOM
本文介绍了使用XML DOM添加命名空间前缀XML字符串的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我想使用XML DOM为XML String中的所有元素添加命名空间前缀。
例如
我的字符串以这种方式来:
I want to add namespace prefix to all the elements in the XML String using XML DOM. E.g. My String is coming in this way:
<root>
<operation>test string</operation>
<data>
<parameter>
<name>test string</name>
<value>test string</value>
</parameter>
<parameter>
<name>test string</name>
<value>test string</value>
</parameter>
<parameter>
<name>test string</name>
<value>test string</value>
</parameter>
</data>
</root>
我想要一个输出XML:
And I want a output XML as:
<ns0:root xmlns:ns0 = "http://www.tibco.com/schemas/BWStatistics-hawk/Schema.xsd2">
<ns0:operation>test string</ns0:operation>
<ns0:data>
<ns0:parameter>
<ns0:name>test string</ns0:name>
<ns0:value>test string</ns0:value>
</ns0:parameter>
<ns0:parameter>
<ns0:name>test string</ns0:ns0:name>
<ns0:value>test string</ns0:value>
</ns0:parameter>
<ns0:parameter>
<ns0:name>test string</ns0:name>
<ns0:value>test string</ns0:value>
</ns0:parameter>
</ns0:data>
</ns0:root>
如何在Java中最佳地实现这一点?
How can i achieve this optimally in Java??
推荐答案
我们可以用Transformer + SAX做到这一点。尝试这样:
We can do it with Transformer + SAX. Try this:
import java.io.StringWriter;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.sax.SAXSource;
import javax.xml.transform.stream.StreamResult;
import org.xml.sax.Attributes;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import org.xml.sax.XMLReader;
import org.xml.sax.helpers.XMLFilterImpl;
import org.xml.sax.helpers.XMLReaderFactory;
public class Test {
public static void main(String args[]) throws Exception {
XMLReader xmlReader = new XMLFilterImpl(XMLReaderFactory.createXMLReader()) {
String namespace = "http://www.tibco.com/schemas/BWStatistics-hawk/Schema.xsd2";
String pref = "ns0:";
@Override
public void startElement(String uri, String localName, String qName, Attributes atts)
throws SAXException {
super.startElement(namespace, localName, pref + qName, atts);
}
@Override
public void endElement(String uri, String localName, String qName) throws SAXException {
super.endElement(namespace, localName, pref + qName);
}
};
TransformerFactory tf = TransformerFactory.newInstance();
Transformer t = tf.newTransformer();
StringWriter s = new StringWriter();
t.transform(new SAXSource(xmlReader, new InputSource("test.xml")), new StreamResult(s));
System.out.println(s);
}
}
这篇关于使用XML DOM添加命名空间前缀XML字符串的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文