java - 如何在Java中放置字符串文本而不将内容转换为xml文件?

标签 java xml string dom document

我需要在Java中将字符串内容放入xml中。我使用这种代码在xml中插入信息:

Document doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(new File ("file.xml"));
DOMSource source = new DOMSource (doc);

Node cards = doc.getElementsByTagName ("cards").item (0);

Element card = doc.createElement ("card");
cards.appendChild(card);

Element question = doc.createElement("question");
question.appendChild(doc.createTextNode("This <b>is</b> a test.");
card.appendChild (question);

StreamResult result = new StreamResult (new File (file));
Transformer tf = TransformerFactory.newInstance().newTransformer();
tf.setOutputProperty(OutputKeys.INDENT, "yes");
tf.transform(source, result);

但是字符串在 xml 中转换如下:

<cards>
  <card>
    <question>This &lt;b&gt;is&lt;/b&gt; a test.</question>
  </card>
</cards>

应该是这样的:

<cards>
  <card>
    <question>This <b>is</b> a test.</question>
  </card>
</cards>

我尝试使用 CDDATA 方法,但它放置的代码如下:

// I changed this code
question.appendChild(doc.createTextNode("This <b>is</b> a test.");
// to this
question.appendChild(doc.createCDATASection("This <b>is</b> a test.");

此代码获取一个如下所示的 xml 文件:

<cards>
  <card>
    <question><![CDATA[This <b>is</b> a test.]]></question>
  </card>
</cards>

我希望有人可以帮助我将字符串内容放入xml文件中,内容完全相同。

提前致谢!

最佳答案

这是预期的行为。

考虑一下如果括号按您放置的方式保留,最终结果基本上是:

<cards>  
  <card>    
    <question>
      This 
      <b>
        is
      </b>
       a test.
    </question>  
  </card>
</cards>

基本上,这会导致 <b>是 xml 树中的附加节点。将括号编码为 &lt;&gt;确保当任何 xml 解析器显示时,括号都会被显示,并且不会被误认为是附加节点。

如果您确实希望它们按照您所说的那样显示,您将需要创建名为 b 的元素。 。这不仅会很尴尬,而且也不会像上面写的那样显示 - 它会显示为额外的嵌套节点,如我上面所示。因此,您需要修改 xml 编写器以内联输出这些标签。

恶心。

关于java - 如何在Java中放置字符串文本而不将内容转换为xml文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5500852/

相关文章:

Java ExecutorService 运行线程两次

java - JSON反序列化,不匹配

xml - XML/JSON 格式的 Google 结果 - 使用自定义搜索引擎

解析圣经书籍字符串的 PHP 问题

java - 在 Android 7.0 中从图片库路径创建位图?

java - 如何在一个类中同步多线程应用程序,而不需要工作线程和 Controller ?

java - (Android) 如何使用模式设置操作栏样式

PHP XML如何输出漂亮的格式

Java正则表达式从字符串中提取测量值

linux - 预期为整数表达式 (Bash)