【问题标题】:How to add sepa header this in XML via SQL or C#如何通过 SQL 或 C# 在 XML 中添加 sepa 标头
【发布时间】:2018-06-26 05:30:59
【问题描述】:

如何通过SQLC#XML 中添加这样的sepa header。请帮忙

<Document xmlns="urn:iso:std:iso:20022:tech:xsd:pain.008.001.02" xmlns:xsi="http://www.w3.org/2001/XMLSchemainstance">

【问题讨论】:

  • 我不清楚“sepa 标头”是什么,或者这与 SQL 有什么关系。你能澄清你的问题吗?如果您能展示到目前为止您已经尝试过什么以及会发生什么,这也将非常有帮助。
  • 我用 SQL 编写了这段代码,并借助 ROOT('Document'), ELEMENTS XSINIL;我得到了这个&lt;Document xmlns:xsi="http://www.w3.org/2001/XMLSchemainstance"&gt;,我想要这个在标题&lt;Document xmlns="urn:iso:std:iso:20022:tech:xsd:pain.008.001.02" xmlns:xsi="http://www.w3.org/2001/XMLSchemainstance"&gt;@DaisyShipton
  • 抱歉,目前还不清楚您要实现什么目标,或者您使用了什么确切的 SQL(我怀疑不止如此)。请编辑您的问题以使其更清晰。我假设您实际上也想要内容-但您没有告诉我们任何有关内容。就个人而言,我会从数据库中获取数据并使用 LINQ to XML 构造 XML,除非有很好的理由不这样做,但是上下文太少,很难为您提供更多帮助。

标签: c# sql xml linq-to-xml


【解决方案1】:

WITH XMLNAMESPACES 添加到您的查询中,这将设置默认的 xml 命名空间。

WITH XMLNAMESPACES (                  
    DEFAULT 'urn:iso:std:iso:20022:tech:xsd:pain.008.001.02'
    )

您的查询将如下所示。
在下面用您的查询更改 SELECT。

WITH XMLNAMESPACES (                  
    DEFAULT 'urn:iso:std:iso:20022:tech:xsd:pain.008.001.02'
    )  
SELECT * FROM YOUR_TABLE
FOR XML AUTO, ROOT('Document'), ELEMENTS XSINIL

这将导致

<Document 
    xmlns="urn:iso:std:iso:20022:tech:xsd:pain.008.001.02"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"      
    >

【讨论】:

  • 非常感谢。但我得到&lt;Document xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:iso:std:iso:20022:tech:xsd:pain.001.001.02"&gt;' I want w3.org/2001/XMLSchemainstance">` 有没有机会我可以添加xmlns:xsi 之前的 XMLNAMESPACES ??? @pfx
  • 这不是一个选项;无论如何,xml 命名空间声明的顺序与 xml 无关。
  • 好的,顺序没有问题,但是我在每个节点中重复了哪个命名空间,你能告诉我为什么会这样,以及如何从子节点中删除它。我只想要它在顶部。 @pfx
  • 示例:- w3.org/2001/XMLSchema-instance" xmlns="urn:iso:std:iso:20022:tech:xsd:pain.001.001.02"> 检查2018-05-22T16:42:12.747ILEV2
  • 能否提供完整的 SQL 语句以及您使用的 SQL Server 版本?我这边的结果没有重复命名空间。
【解决方案2】:

我已经放弃尝试使用 Net 库来正确地获取名称空间。我只是解析总是有效且更简单的字符串。请参阅下面的代码:

            string ident = "<?xml version=\"1.0\" encoding=\"utf-8\"?><Document xmlns:xsi=\"http://www.w3.org/2001/XMLSchemainstance\" xmlns=\"urn:iso:std:iso:20022:tech:xsd:pain.008.001.02\"></Document>";
            XDocument doc = XDocument.Parse(ident);
            XElement document = doc.Root;

【讨论】:

  • 您能否进一步给我代码也请我如何在xmlns:xsi="w3.org/2001/XMLSchemainstance"&gt;; 之前添加因为我是这方面的新手。 @jdweng​​span>
  • 只要颠倒字符串中两个命名空间的顺序即可。我更新了代码。
猜你喜欢
  • 1970-01-01
  • 2017-04-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-04
  • 2016-12-06
  • 2014-07-19
  • 1970-01-01
相关资源
最近更新 更多