【问题标题】:exporting the &-sign to xml from java [duplicate]将 &-sign 从 java 导出到 xml [重复]
【发布时间】:2012-11-06 15:26:50
【问题描述】:

可能重复:
How to disable/avoid Ampersand-Escaping in Java-XML?

我需要创建类似:∧(在 xml 文件中),问题是,我使用的 java 技术将其转换为 ∧,这对我不起作用。我需要第一种格式。所以,问题是,有没有办法以某种方式或任何方式来逃避它:∧? 对于导出,我使用与此处相同的方法:link

【问题讨论】:

  • 请向我们展示您的代码片段,我们将帮助您更正它。
  • 我正在使用我链接的方法。 -__- 这个项目很大。但它的工作方式与链接页面相同。我正在使用这个:tag.setAttribute("defaultText", "∧");

标签: java xml export ampersand


【解决方案1】:

这是你想要的吗?

    DocumentBuilderFactory f = DocumentBuilderFactory.newInstance();
    DocumentBuilder builder = f.newDocumentBuilder();

    Document d = builder.newDocument();
    Element root = d.createElement("root");
    d.appendChild(root);
    root.setTextContent("this text contains the \u2227 character");

    Transformer t = TransformerFactory.newInstance().newTransformer();
    t.setOutputProperty(OutputKeys.ENCODING, "US-ASCII");
    t.setOutputProperty(OutputKeys.INDENT, "yes");
    t.transform(new DOMSource(d), new StreamResult(System.out));

产生

<?xml version="1.0" encoding="US-ASCII" standalone="no"?>
<root>this text contains the &#8743; character</root>

【讨论】:

  • 是的,但我需要它作为标签而不是标签之间的文本。也许它也在那里工作。我明天试试!
  • 嗯?为了标签?你的意思是一个属性?
  • 好吧,它对属性的作用是一样的。试试看!
  • 不错。明天试试...谢谢
  • 好的,但是现在你有 42 声望,时机成熟了 ;-)
【解决方案2】:

执行此操作的方法是使用&amp;amp;。通常它会起作用。如果它不适合您,请发布一些代码 sn-ps。

【讨论】:

  • 或者换句话说:解析包含“&#8743;”的XML文档时使用适当的 XML 解析器将返回“∧”再次。
  • 现在它不起作用了。如果它会工作,我不会问。 &amp;amp;amp;#8743; 到达 &amp;amp;amp;#8743;
  • 然而换句话说:一个包含“∧”的 XML 文档不是有效的 XML 文档,AFAIK。
  • 请按照建议显示相关代码。
  • 用户应该如何输入不在键盘上的符号? &amp;#8743; 是有效的 xml
【解决方案3】:

我认为问题在于您正在尝试手动编码 XML。

试试:

  • 将用户输入转换为 Java 字符串
  • 让 XML 库负责从 Java 字符串到 XML 字符串的转换

【讨论】:

  • 这篇文章毫无意义 XD。如何将字符串以外的东西传递给tag.setAttribute()方法而不是字符串?
  • @immerhart 根据四十二的回复,XSD 中的“∧”等于 Java 中的“\u2227”。因此,请确保使用 Java 字符编码,而不是 XSD 字符编码。
【解决方案4】:

你可以试试:

Document doc = documentBuilder.newDocument();
Element root= doc.createElement("root");
doc.appendChild(root);

Document newDoc = documentBuilder.parse(new InputSource(new StringReader("<element defaulttext=\"&#8743;\">some text or XML</element>")));

Element newElement = newDoc.getDocumentElement();
Node node = doc.importNode(newElement, true);

root.appendChild(node);

【讨论】:

    猜你喜欢
    • 2013-12-24
    • 1970-01-01
    • 1970-01-01
    • 2013-08-28
    • 1970-01-01
    • 2014-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多