Как преобразовать строку в XML-файл в Java

 <?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body><LoginResponse xmlns="http://tempuri.org/QuestIPhoneWebService/QuestIPhoneWebService"><LoginResult>&lt;RETURN_VALUE&gt;&lt;ERROR RESULT= '-1' DESC = 'The password entered into the system is not valid. Please check your password and try again.'/&gt;&lt;/RETURN_VALUE&gt;</LoginResult></LoginResponse></soap:Body></soap:Envelope>

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

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>
<LoginResponse xmlns="http://tempuri.org/QuestIPhoneWebService/QuestIPhoneWebService">
<LoginResult>
&lt;ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql"&gt;&lt;LOGIN_DETAILS USER_ID="testpub2" COMPANY_ID="1" USER_NAME=" aaa" SYSTEM_USER_ID="6976" USER_EMAIL_ID="[email protected]" TOKEN_STRING="A93805F1F1C340F5A8155FDD9B77E595" DISCLAIMER_AGREED="1" USER_ENABLED="1" USER_COMPANY_ENABLED="1" USER_TYPE="2" LOGIN_EXPIRY_DAYS="999" TOKEN_CREATION_DATE="2010-10-01T16:04:26" MOBILE_ENABLED="1" USER_COMPANY_MOBILE_ENABLED="1"/&gt;&lt;COMPANY_DETAILS CLIENT_TYPE_ID="8"/&gt;&lt;USER_SETTINGS&gt;&lt;QUEST_GROUP ID="14293" NAME="World" ASSIGN_NUM="14"/&gt;&lt;INDEX_PROVIDER ID="14251" NAME="QUEST (Default)"/&gt;&lt;STOCK_IDENTIFIER ID="57" NAME="TICKER"/&gt;&lt;/USER_SETTINGS&gt;&lt;PERMISSIONS&gt;&lt;QUEST_FUNCTIONS&gt;&lt;FUNCTION NAME="charting" ID="501" ACCESS="1"/&gt;&lt;FUNCTION NAME="modeller" ID="512" ACCESS="1"/&gt;&lt;FUNCTION NAME="momentum" ID="513" ACCESS="1"/&gt;&lt;FUNCTION NAME="portfolio" ID="516" ACCESS="1"/&gt;&lt;FUNCTION NAME="search" ID="518" ACCESS="1"/&gt;&lt;FUNCTION NAME="sensitivity" ID="521" ACCESS="1"/&gt;&lt;FUNCTION NAME="statistics" ID="524" ACCESS="1"/&gt;&lt;FUNCTION NAME="strategy" ID="525" ACCESS="1"/&gt;&lt;FUNCTION NAME="summary" ID="526" ACCESS="1"/&gt;&lt;FUNCTION NAME="triangle" ID="528" ACCESS="1"/&gt;&lt;FUNCTION NAME="valuation" ID="529" ACCESS="1"/&gt;&lt;FUNCTION NAME="commentary" ID="530" ACCESS="1"/&gt;&lt;FUNCTION NAME="CITN" ID="534" ACCESS="1"/&gt;&lt;FUNCTION NAME="batch report" ID="553" ACCESS="1"/&gt;&lt;FUNCTION NAME="ModellerWS" ID="557" ACCESS="1"/&gt;&lt;FUNCTION NAME="Sector Analysis" ID="562" ACCESS="1"/&gt;&lt;/QUEST_FUNCTIONS&gt;&lt;ADMIN_FUNCTIONS&gt;&lt;FUNCTION NAME="administrator" ID="531" ACCESS="0"/&gt;&lt;FUNCTION NAME="author" ID="532" ACCESS="1"/&gt;&lt;FUNCTION NAME="publisher" ID="533" ACCESS="0"/&gt;&lt;FUNCTION NAME="editor" ID="539" ACCESS="0"/&gt;&lt;/ADMIN_FUNCTIONS&gt;&lt;/PERMISSIONS&gt;&lt;/ROOT&gt;
10-04 14:30:08.696: DEBUG/login result is(439): </LoginResult></LoginResponse></soap:Body></soap:Envelope>

дочерний узел идет как этот USER_ID = "testpub2" Я должен преобразовать xnode и получить значение, как скрыть узел XML? и взять значение с помощью saxparser. я могу принять значение напрямую?

 Nivas08 окт. 2010 г., 08:10
Вы хотите написать эту строку в XML-файл, используя Java?
 Jim Ferrans08 окт. 2010 г., 08:15
Хм, "Как записать строку в файл на Java" не очень интересно. Как насчет того, как записать только содержимое тела SOAP (<LoginResponse>) в файл XML?

Ответы на вопрос(2)

Решение Вопроса

ас есть документ, вы можете перемещаться по узлам или писать в файл и т. Д.

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

public class Util {

    public static Document stringToDom(String xmlSource) 
            throws SAXException, ParserConfigurationException, IOException {
        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
        DocumentBuilder builder = factory.newDocumentBuilder();
        return builder.parse(new InputSource(new StringReader(xmlSource)));
    }
}
 mohan08 окт. 2010 г., 10:11
мой дочерний узел идет следующим образом: USER_ID = "testpub2" Я должен преобразовать формат XML и принять значение, как я могу это сделать?
public void writeFile(String yourXML){
    BufferedWriter out = new BufferedWriter(new FileWriter("outfilename.xml"));
    try { 
        out.write(yourXML);
    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        out.close();
    }
}
 Hobo08 окт. 2010 г., 08:26
Разве это "aString" не должно быть yourXML?
 Thilo09 окт. 2010 г., 03:40
Теперь он больше не будет компилироваться, потому чтоout не определен в области действия блока finally. Я думаю, что если бы Java облегчала использование блоков, больше людей использовали бы их ...
 Octavian Damiean08 окт. 2010 г., 10:18
Просто чтобы дать вам обратную связь с тем, что я узнал. Вы не должны вызывать метод close в блоке try. Если выдается исключение, вы получаете открытый файл. поместите его в свой блок finally, так как в конце вызывается, даже когда выдается исключение.
 amra08 окт. 2010 г., 18:41
ты прав; о)
 mohan08 окт. 2010 г., 10:20
мой формат узла не подходит должным образом USER_ID = "testpub2" я хочу преобразовать формат XML и принять значение

Ваш ответ на вопрос