2010-11-10 6 views
1

Я следующие строки XML:Строка XML преобразования

<persons> 
    <person> 
     <name>Someone</name> 
     <age>27</age> 
    </person> 
    <person> 
     <name>Otherone</name> 
     <age>43</age> 
    </person> 
</persons> 

Я хочу взять эту строку и получить от него объект DOM. Это может быть любая строка XML (не из файла!).

Извините за этот вопрос, спасибо большое за помощников.

ответ

3
org.w3c.dom.Document doc = 
    javax.xml.parsers.DocumentBuilderFactory.newInstance().newDocumentBuilder(
     ).parse(
    new org.xml.sax.InputSource(new java.io.StringReader(xmlString))); 
+0

Спасибо, Он возвращает исключение, если строка XML не хорошо сформирована, Как я могу работать с не-хорошо сформированными строками xml? – Yosi

+0

@Yosi Вы можете поймать исключение и сообщить об ошибке. Если вы хотите получать данные из строки, которая может содержать или не содержать хорошо сформированный XML, вам могут понадобиться регулярные выражения. – khachik

+0

@Yosi другой подход: используйте синтаксический анализатор SAX и теги дескрипторов/attrs/символов, пока парсер не выполнит ошибку. Может быть, вы можете объяснить, что вы хотите сделать? – khachik

0

Попробуйте это:

import java.io.IOException; 

import org.apache.xerces.parsers.DOMParser; 
import org.w3c.dom.Document; 
import org.xml.sax.InputSource; 
import org.xml.sax.SAXException; 



public class String2XML { 

    public static void main(String[] args) throws SAXException, IOException { 
     String xml="<persons><person><name>Someone</name><age>27</age></person><person><name>Otherone</name><age>43</age></person></persons>"; 
     DOMParser parser = new DOMParser(); 
     parser.parse(new InputSource(new java.io.StringReader(xml))); 
     Document doc = parser.getDocument(); 
     System.out.println("String2XML.main()-"+doc.toString()); 
    } 
} 

Не забудьте включая xercesImpl.jar и XML-apis.jar в вашем пути к классам. Вы можете найти их здесь http://archive.apache.org/dist/xml/xerces-j/binaries/

Смежные вопросы