如何从 xpath 创建 XML 文档

发布于 2024-12-02 16:36:20 字数 289 浏览 1 评论 0原文

我需要将我的域对象转换为 xml 文档以供第三方数据交换。

我有一个映射文档,其中包含我的域中的数据的位置以及该数据导出到 xml 文档的位置的 xpath。

我想要做的是构建一个引擎,它将读取此映射文件,从我的域对象中提取数据并构建正确的 xml 文档。

我当前的困难是在构建 xpath 时,我需要确保 xml 序列按正确的顺序放置。

关于如何解决这个问题有什么建议吗?

** 我试图避免将表示 xml 文档的类引入到我的代码库中。这样我们就可以添加新的导出而无需重新编译项目。

I need to transform my domain object into an xml document for a third party data exchange.

I have a mapping document with the location of the data from my domain and an xpath of where this data exports into the xml document.

What I am looking to do is build an engine that will read this mapping file pull the data out of my domain object and build the proper xml document.

My current difficulty is while taking the xpaths to build I need to ensure that the xml sequences are placed in the correct order.

Any suggestions on how to approach this?

** I am trying to avoid bringing in classes representing xml documents in to my code base. This way we can add a new export with out recompiling the project.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

眼眸里的快感 2024-12-09 16:36:20

我将提出一些与您所要求的稍有不同的建议,因为我发现 xpath 有点麻烦,当我第一次开始使用 LINQ to XML 时,这是我内心幸福的一场小型革命。

这里的优点之一是,如果您决定要以不同的方式进行序列化,则几乎不需要更改代码,您只需找到一个 Linq to(Json、SQL 等)库(其中有很多,并且像 SQL 这样的库)由 Microsoft 提供)并进行非常小的代码更改。

查看 msdn 上的 Linq to Xml

如果您认为您可能对此感兴趣,或者对 Linq 感兴趣,我发现 Linq in Action 这本书是一本非常好的基础知识书籍。

I'm going to suggest something a little different than what you're asking, because I've found xpath a bit cumbersome and when I first started using LINQ to XML it was a mini revolution of happiness within me.

One of the advantages here is that if you ever decide you want to serialize differently, there's little code change, you simply need to find a Linq to (Json, SQL, etc) library (of which there are many, and things like SQL are provided by Microsoft) and make very minor code changes.

Check out Linq to Xml on msdn.

If you think that you might be interested in this, or more about Linq, I found the book Linq in Action to be a very good book to get the basics down.

甜点 2024-12-09 16:36:20

对于您来说,从需要为其生成消息的各种接口上公开的契约生成类型库是最简单的。您可以使用 xsd.exe 或 svcutil.exe 对于 wcf 端点执行此操作。

然后,如果您需要为特定接口生成 xml 实例,您只需填充该接口类型的实例,并使用 XmlSerializer.Serialize() 序列化该接口的实例消息。

这样做的好处是:

  1. 您的 xml 实例将符合端点模式,
  2. 您不需要每次都手动启动 xml。

如果您希望我更详细地解释任何步骤,请通过评论告诉我。

希望这有帮助。

It would be easiest for you generate type libraries from the contracts exposed on the various interfaces you need to generate messages for. You can do this with xsd.exe or svcutil.exe for wcf endpoints.

Then if you need to generate a xml instance for a specific interface you simply popluate an instance of the type for the interface and use XmlSerializer.Serialize() to serialize an instance message for that interface.

This has the benefits:

  1. that your xml instances will conform to the endpoint schemas
  2. you do not need to hand-crank the xml out each time

If you want me to explain any of the steps in more detail let me know via a comment.

Hope this helps.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文