是什么导致“实体名称必须紧跟'&'在实体“错误?

时间:2014-05-28 14:35:04

标签: javascript xml apigee

{
    "code" : "messaging.config.beans.ImportFailed",
    "message" : "Failed to import the bundle : com.apigee.repository.RepositoryException: javax.xml.bind.UnmarshalException\n - with linked exception:\n[org.xml.sax.SAXParseException: The entity name must immediately follow the '&' in the entity reference.]",
    "contexts" : [ ],   "cause" : {
        "message" : "javax.xml.bind.UnmarshalException\n - with linked exception:\n[org.xml.sax.SAXParseException: The entity name must immediately follow the '&' in the entity reference.]",
        "contexts" : [ ],
        "cause" : {
            "contexts" : [ ],
            "cause" : {
                "message" : "The entity name must immediately follow the '&' in the entity reference.",
                "contexts" : [ ]
            }
        }
    }
}

每次尝试上传到apigee时,我都会收到此错误。我几乎检查了每个&符号。有谁知道如何获得更多信息?

3 个答案:

答案 0 :(得分:2)

检查您的条件和条件流量&& - 虽然您可以使用&&成功部署在用户界面中(因为它可以帮助您将转换"&&"转换为"和#34;)如果直接通过Management API进行部署,则无法使用双&符号。

通过UI部署此内容

<Condition>(1 = 1) && (2 = 2)</Condition>

似乎会成功,但如果你之后检查你的代码(你可能需要刷新),你会看到它变成

<Condition>(1 = 1) and (2 = 2)</Condition>

但是,如果您尝试使用&amp;&amp;通过管理API,您会收到错误:

{
  "code" : "messaging.config.beans.ImportFailed",
  "message" : "Failed to import the bundle : com.apigee.repository.RepositoryException: javax.xml.bind.UnmarshalException\n - with linked exception:\n[org.xml.sax.SAXParseException: The entity name must immediately follow the '&' in the entity reference.]",
  "contexts" : [ ],
  "cause" : {
    "message" : "javax.xml.bind.UnmarshalException\n - with linked exception:\n[org.xml.sax.SAXParseException: The entity name must immediately follow the '&' in the entity reference.]",
    "contexts" : [ ],
    "cause" : {
      "contexts" : [ ],
      "cause" : {
        "message" : "The entity name must immediately follow the '&' in the entity reference.",
        "contexts" : [ ]
      }
    }
  }

答案 1 :(得分:0)

到目前为止,解析错误的最常见原因是XML文本中某处未编码的&符号。您需要在XML中编码&符号。您可以使用&amp;&#038;(&符号的Unicode等效项)执行此操作,也可以将其嵌入CDATA部分。

你说你几乎检查过每个&符号 - 除了显然建议检查其余的&符号,如果你在XSL转换中使用参数,我确保你的数据正在发送没有未编码的&符号。在转换之前,您可能需要运行JavaScript或其他代码策略来对输入参数中的任何&符号进行编码。

答案 2 :(得分:0)

它已经解决了。一个&符已包含在属性文件中,因此在maven构建过程中,&符号将包含在最终zip / jar文件中的XML中。

容易犯错。