2015-09-16 13 views
2

Я новичок в Java и нужно разобрать по указанному ниже XML-файлаJava - Extract дочерние элементы

<foo> 
    <foo1> 
     <tag1>1</tag1> 
     <tag2>2</tag2> 
    </foo1> 

    <foo2> 
     <element1>aaa</element1> 
     <element1>bbb</element2> 
    </foo2> 

</foo> 

мне нужно,

<foo1> 
    <tag1>1</tag1> 
    <tag2>2</tag2> 
</foo1> 

<foo2> 
    <element1>aaa</element1> 
    <element1>bbb</element2> 
</foo2> 

в качестве вывода. Мне удалось получить значения узлов, но не желаемый результат. Пожалуйста, помогите мне. Спасибо.

+0

Желаемый результат не является корректным XML. так что вы хотите? просто строка? –

+0

да .... Мне нужна строка. – Ajay

ответ

1

ОК, я думаю, что у меня есть. Вот код с документацией:

import java.io.*; 
import javax.xml.parsers.*; 
import javax.xml.transform.*; 
import javax.xml.transform.dom.*; 
import javax.xml.transform.stream.*; 
import org.w3c.dom.*; 

    // parse input XML file into Document 
    Document doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse("C://Temp/xx.xml"); 

    // build a formatted XML String 
    Transformer transformer = TransformerFactory.newInstance().newTransformer(); 
    transformer.setOutputProperty(OutputKeys.INDENT, "yes"); 
    StreamResult result = new StreamResult(new StringWriter()); 
    transformer.transform(new DOMSource(doc), result); 
    String xmlString = result.getWriter().toString(); 

    // Split the formatted-XML-String according to new-line 
    String lines[] = xmlString.split("\\r?\\n"); 
    // rebuild the String, skipping undesired lines 
    xmlString = "" ; 
    String newLine = String.format("%n"); 
    for (int i = 2 ; i < lines.length-1 ; i++) { 
     xmlString += lines[i] + newLine; 
    } 
    System.out.println(xmlString); 
+0

спасибо sharonbn .. – Ajay

0

Поскольку в вашем случае вы хотите получить недопустимый XML в качестве вывода, я предлагаю вам не анализировать XML-файл. Просто прочитайте весь файл по строкам и постройте нужную строку, пропустив первую и последнюю строки

+0

Спасибо sharonbn ... Я попытался с этим подходом, Java читает мои XML-файлы в одной строке. Я думаю, мои XML-файлы не имеют никакого нового символа строки. Я пробовал через FileReader и InputStreamReader. Есть ли другой альтернативный способ справиться с этим сценарием. – Ajay

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