0

2 つのスクリーン ショットと私のコードが添付されています。animation_sequence を終了および終了ブラケットとして取得しようとしています。最善を尽くしましたが、今はあなたの助けを求めています。助けてください。私が持っているコードはそれを

コード:

 DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
        DocumentBuilder builder = factory.newDocumentBuilder();
        Document testDoc = builder.parse(new File("./data/sprite_types/" + spriteName + "/" + spriteName + ".xml"));
        Element state = testDoc.createElement("state");
        state.setTextContent(element);
        Element animationState = testDoc.createElement("animation_state");
        Element sequence = testDoc.createElement("animation_sequence");
        testDoc.getElementsByTagName("animations_list").item(0).appendChild(animationState).appendChild(state);
        testDoc.getElementsByTagName("animation_state").item(testDoc.getElementsByTagName("state").getLength() - 1).appendChild(sequence);
        DOMSource source = new DOMSource(testDoc);
        PrintStream ps = new PrintStream("./data/sprite_types/" + spriteName + "/" + spriteName + ".xml");
        StreamResult result = new StreamResult(ps);
        TransformerFactory transformerFactory = TransformerFactory.newInstance();
        Transformer transformer = transformerFactory.newTransformer();
        transformer.transform(source, result);

良くない 良い

4

1 に答える 1

1

その理由は、animation_sequence要素を作成しているが、その下に子ノードを作成していないためです。事実上、空の要素を作成しています。空の要素は、文字列にシリアライズされると、常に<tag/>ではなくとして表示され<tag></tag>ます。

これを回避するには、要素Textの子ノードとして空のノードを追加する必要があります。animation_sequence

sequence.appendChild(testDoc.createTextNode(""));

(または、Commons Lang を使用している場合は、に置き換え""ますStringUtils.EMPTY)

于 2012-11-30T03:48:41.553 に答える