【问题标题】:Producing wrong XML output产生错误的 XML 输出
【发布时间】:2012-11-30 11:48:41
【问题描述】:

附件是两个屏幕截图和我的代码。我正在尝试将 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);

【问题讨论】:

  • 所以我注意到的第一件事 - 'sequence' 在结束标签上拼写错误。
  • 这是我的一个错字,只是为了证明我希望它是怎样的。

标签: java xmlhttprequest


【解决方案1】:

原因是您正在创建animation_sequence 元素,但没有在其下创建任何子节点。实际上,您正在创建一个空元素。空元素在序列化为字符串时,将始终显示为<tag/>,而不是<tag></tag>

为避免这种情况,您需要添加一个空的Text 节点作为animation_sequence 元素的子节点:

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

(或者,如果您使用 Commons Lang,请将 "" 替换为 StringUtils.EMPTY

【讨论】:

  • 我在追加序列之前尝试按照你说的做,在追加序列之后,我仍然遇到同样的问题。
  • 啊,我刚刚意识到通过添加“”什么都没有发生,但是通过添加“”,一个额外的空间现在处于我的状态,例如,雅虎变成了“雅虎”
猜你喜欢
  • 2011-03-09
  • 2016-02-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多