0

文字列オブジェクト「helloworld」があります。この文字列から、テキストコンテンツとしてhelloworldを使用してxmlファイルを作成する必要があります。次のコードスニペットを試しました

String xmlString = "<?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:Envelope>";

    DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();   

    DocumentBuilder builder;   
    try  
    {   
        builder = factory.newDocumentBuilder();   

        // Use String reader   
        Document document = builder.parse( new InputSource(   
                new StringReader( xmlString) ) );   

        TransformerFactory tranFactory = TransformerFactory.newInstance();   
        Transformer aTransformer = tranFactory.newTransformer();   
        Source src = new DOMSource( document );   
        Result dest = new StreamResult( new File("D:\\myXML.xml" ) );   
        aTransformer.transform( src, dest );  

    } catch (Exception e)   
    {   
        // TODO Auto-generated catch block   
        e.printStackTrace();   
    }   

このコードは正常に機能します。しかし、文字列を「Hello world」に置き換えると、機能しません。誰かがこれで私を助けることができますか?ありがとう

4

4 に答える 4

2

文字列「hello world」は有効な XML ドキュメントではないため、XML に変換できません。宣言もタグもありません。

上記のコードは、テキストを xml オブジェクトに変換せず、既に有効な xml である文字列のみを取得してファイルに書き込みます。

正直なところ、ファイルに書き込むだけなら、xml などは不要です。

ある種の "hello world" xml ファイルが必要な場合は、宣言といくつかのタグを自分で追加する必要があります。

于 2012-07-13T07:03:31.210 に答える
1

xmlStringこのエラーは、有効でない XML 文字列として解析しようとしているために発生します。たとえば、コードは次のように正常に実行されますxmlString

String xmlString = "<hi>Hello World</hi>";
于 2012-07-13T07:04:53.673 に答える
0

あなたが持っている場合String newNode = "<node>Hello World</node>";

使用できます

 Element node =  DocumentBuilderFactory
    .newInstance()
    .newDocumentBuilder()
    .parse(new ByteArrayInputStream(newNode.getBytes()))
    .getDocumentElement();
于 2012-07-13T07:06:26.767 に答える
0

最も簡単な解決策は次のとおりです。有効な文字列 (XML 基準に従って正しい) である場合は、FileWriter を使用して新しいファイルに書き込み、.xml 拡張子を付けます。とにかく、有効な XML 文字列でない場合は変換されません

于 2012-07-13T10:12:49.767 に答える