java xml字符串提取元素,如何从Java中将子元素从XML提取到字符串?
你是對的,使用標準的XML API,這不是一個好方法 – 這是一個例子(可能是錯誤的;它運行,但我很久以前寫過它).
import javax.xml.*;
import javax.xml.parsers.*;
import javax.xml.transform.*;
import javax.xml.transform.dom.*;
import javax.xml.transform.stream.*;
import org.w3c.dom.*;
import java.io.*;
public class Proc
{
public static void main(String[] args) throws Exception
{
//Parse the input document
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document doc = builder.parse(new File("in.xml"));
//Set up the transformer to write the output string
TransformerFactory tFactory = TransformerFactory.newInstance();
Transformer transformer = tFactory.newTransformer();
transformer.setOutputProperty("indent", "yes");
StringWriter sw = new StringWriter();
StreamResult result = new StreamResult(sw);
//Find the first child node - this could be done with xpath as well
NodeList nl = doc.getDocumentElement().getChildNodes();
DOMSource source = null;
for(int x = 0;x < nl.getLength();x++)
{
Node e = nl.item(x);
if(e instanceof Element)
{
source = new DOMSource(e);
break;
}
}
//Do the transformation and output
transformer.transform(source, result);
System.out.println(sw.toString());
}
}
看起來你可以通過使用doc.getDocumentElement().getFirstChild()來獲得第一個孩子,但問題是如果root和child元素之間有任何空格,那么將創建一個Text節點.樹,你將獲得該節點而不是實際的元素節點.該程序的輸出是:
D:\home\tmp\xml>java Proc
blahblah
如果你不需要它,我認為你可以壓縮xml版本字符串,但我不確定.如果可能的話,我可能會嘗試使用第三方XML庫.
總結
以上是生活随笔為你收集整理的java xml字符串提取元素,如何从Java中将子元素从XML提取到字符串?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php socket 效率,php so
- 下一篇: java builder.parse_J