【发布时间】:2018-12-13 11:34:29
【问题描述】:
我在 any 标记中接收到一个标准 XML 文档。目前我只是复制收到的整个文档,并将其插入到任何标签中,如下面的 XSLT 所示:
<xsl:element name="msgBody">
<xsl:copy>
<xsl:copy-of select="/" />
</xsl:copy>
</xsl:element>
这按预期工作,因为它将 XML 文档插入到架构中放置 any 标记的位置。但是,这需要使用 WCF-SQL 适配器发送到 SQL 数据库。因此,我需要取消对 XML 的 escpae,因为适配器正在解释 字符,这会引发如下错误:
"名称为 X 和命名空间 X 的起始元素是意外的。请 确保您的输入 XML 符合操作的架构。”
any 标签被设置为跳过 xml 处理。我知道有一个选项可以禁用 value-of 元素上的输出转义,但是如何使用 copy-of 元素来实现这一点?我是否需要实现一个管道来处理转义?
简而言之,我想要一个这样的 XML 字符串:
<bizSaveDocument>
<conversationID>829c0747-76e0-4298-a9f1-0fcc2a234668</conversationID>
<fromID>NULL</fromID>
<toID>NULL</toID>
</bizSaveDocument>
要转义,让map的输出变成这样:
<bizSaveDocument>
<conversationID>829c0747-76e0-4298-a9f1-0fcc2a234668</conversationID>
<fromID>NULL</fromID>
<toID>NULL</toID>
</bizSaveDocument>
【问题讨论】:
-
搞笑,我也遇到了同样的问题。这可能会有所帮助stackoverflow.com/questions/1162352/…
-
谢谢,我尝试了这个解决方案,但它会产生很多不必要的命名空间,正如作者所描述的那样。你知道从输出中删除这些命名空间的方法吗?
-
这似乎有点不寻常。您是否尝试将 Xml 作为字符串发送?或者您会在上面使用 OpenXml(不要;)吗?基本上,一旦 Xml 到达 SP,您将如何处理它?
-
XML 应该存储在数据库中单个字段的记录中。是的,我正在尝试将 XML 作为字符串发送,因为它不会以任何方式进行处理或验证。
标签: xml xslt tags maps biztalk