相关疑难解决方法(0)

如何防止JAXB转义字符串

我有一个由XJC生成的对象,叫做Product.我想设置product.currentPrice (a String)成为£210其中£的货币符号(从其他地方系统中的传递).

麻烦的是,JAXB正在逃避我的&号,所以它生产了£210.我怎么做不这样做?

java jaxb

13
推荐指数
2
解决办法
3万
查看次数

使用JAXB Marshaller处理XML转义字符(例如引号)

我需要使用JAXB Marshaller(JAXB 2.2版)将XML java对象序列化为XML文件.现在在xml对象中,我有一个包含String值的标记,这样:

"<"tagA>
**"<"YYYYY>done"<"/YYYYY>**
"<"/tagA>
Run Code Online (Sandbox Code Playgroud)

现在您可以看到此字符串值再次包含标记.我希望在xml文件中以相同的方式编写它.

但是JAXB Marshaller会转换这些值,例如:

"&"lt;YYYYY"&"gt;"&"#xD;done ......等等

我无法使用JAXB 2.2单独处理这些转义字符.反正可能吗?

在这方面的任何帮助都会很棒..

在此先感谢Abhinav Mishra

java escaping character jaxb marshalling

8
推荐指数
2
解决办法
5万
查看次数

JAX-WS端点仅部分转义XML String

我有一个JAX-WS端点,其中包含许多方法,这些方法都返回转换为String的XML文档.

这已经在Sun Java System Application Server 9.1 Update 2上运行了一段时间,但需要部署到新服务器.

它被部署到Glassfish 3.0.1没有任何问题,除了一个小问题.原始响应示例摘录:

<?xml version="1.0" ?>
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
  <S:Body>
    <ns2:getTransactionTypesResponse xmlns:ns2="http://myns.com.au/">
      <return xmlns="">&lt;?xml version="1.0" encoding="UTF-8"?&gt;

&lt;my_xml version="1.2" query_date=""&gt;
  &lt;add_transaction_type description="Contributions" name="Contribution" type="C"/&gt;
  &lt;add_transaction_type description="Transfer In" name="Xfr or R/O In" type="X"/&gt;
&lt;/my_xml&gt;
      </return>
    </ns2:getTransactionTypesResponse>
  </S:Body>
</S:Envelope>
Run Code Online (Sandbox Code Playgroud)

在新服务器上,它返回:

<?xml version='1.0' encoding='UTF-8'?>
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
  <S:Body>
    <ns2:getTransactionTypesResponse xmlns:ns2="http://myns.com.au/">
      <return>&lt;?xml version="1.0" encoding="UTF-8"?>

&lt;myxml version="1.2" query_date="">
  &lt;add_transaction_type description="Contributions" name="Contribution" type="C"/>
  &lt;add_transaction_type description="Administration Fee" name="Fee:AUM" type="U"/>
&lt;/my_xml>
      </return>
    </ns2:getTransactionTypesResponse>
  </S:Body>
</S:Envelope>
Run Code Online (Sandbox Code Playgroud)

几乎完全相同但只有开口尖括号被转义,而不是关闭括号.

我已使用直接HTTP POST请求对此进行了测试,因此我知道它没有受到任何客户端代码的破坏.

我再次将服务器升级到Glassfish 3.1,认为包含的webservice库存在问题,但没有运气.我的应用程序完全依赖于glassfish中的webservice支持 - 它不包含任何自己的WS或XML库.

端点基本上定义如下: …

java xml web-services escaping java-metro-framework

6
推荐指数
1
解决办法
3760
查看次数

使用 JAXB 解组 XML,无需取消转义字符

想象一下以下情况:我们从某些外部工具收到一个 xml 文件。最近,在此 xml 中,节点名中或其 richcontent 标记中可能存在一些转义字符,如以下示例(简化)所示:

<map>
<node TEXT="Project">
<node TEXT="&#xe4;&#xe4;">
<richcontent TYPE="NOTE"><html>
  <head>

  </head>
  <body>
    <p>
      I am a Note for Node &#228;&#228;!
    </p>
  </body>
</html>
</richcontent>
</node>
</node>
</map>
Run Code Online (Sandbox Code Playgroud)

使用 JAXB 解组文件后,那些转义的字符就不会转义。不幸的是,我需要他们保持原样,这意味着逃跑。有什么方法可以避免在解组时取消转义这些字符?

在研究时,我发现了很多有关编组 xml 文件的问题,其中出现了相反的问题,但这些也没有帮助我:

是否有可能使用 JAXB 来实现这一目标,或者我们是否必须考虑更改为不同的 xml 读取器 API?

提前谢谢你,ymene

java xml escaping unmarshalling

5
推荐指数
1
解决办法
6211
查看次数

如何在 JAXB 中转义 unmarshal xml 上的特殊字符

我有下一个 xml 文件

<xml name="Places">
    <data>
        <row Code="1" Name="#X1.A&B(City)" />
    </data>
</xml>
Run Code Online (Sandbox Code Playgroud)

在执行 unmarshal 后,The reference to entity "B" must end with the ';' delimiter由于 Name 属性内的 & 符号,我收到异常。

JAXBContext jaxbContext = JAXBContext.newInstance(Root.class);
Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
File xml = new File("test2.xml");
Object obj = unmarshaller.unmarshal(xml);
Run Code Online (Sandbox Code Playgroud)

我怎样才能逃脱这些角色?

我已经尝试添加 CharacterEscapeHandler 但它不适用于 Unmarshaller

private static class EscapeHandler implements CharacterEscapeHandler {
    @Override
    public void escape(char[] buf, int start, int len, boolean isAttValue,
            Writer out) throws IOException {
           ...
    }

}

unmarshaller.setProperty("com.sun.xml.bind.marshaller.CharacterEscapeHandler", …
Run Code Online (Sandbox Code Playgroud)

java xml jaxb

5
推荐指数
1
解决办法
1万
查看次数