C# 如何连接从2个api调用返回的2个xml文件?

C# 如何连接从2个api调用返回的2个xml文件?,c#,.net,xml,C#,.net,Xml,我正在使用第三方应用程序的web服务API通过我的web应用程序搜索数据 有一个联系人API和一个客户端API。contacts表包含客户端的ID,但不包含名称。要搜索和显示联系人以及显示客户端的名称,我需要调用这两个API 连接两个结果XML文件的最佳方式是什么?我使用的是.Net 4.0。我会快速地完成它: XDocument .Parse( "<bigDoc>" +XDocument.Parse("<a><b/>&

我正在使用第三方应用程序的web服务API通过我的web应用程序搜索数据

有一个联系人API和一个客户端API。contacts表包含客户端的ID,但不包含名称。要搜索和显示联系人以及显示客户端的名称,我需要调用这两个API


连接两个结果XML文件的最佳方式是什么?我使用的是.Net 4.0。

我会快速地完成它:

XDocument
    .Parse(
        "<bigDoc>"
        +XDocument.Parse("<a><b/></a>").Root
        +XDocument.Parse("<c><d/></c>").Root
        +"</bigDoc>")
XDocument
.解析(
""
+XDocument.Parse(“”.Root
+XDocument.Parse(“”.Root
+"")

但您可能会遇到各种难以解决的名称空间问题。正如下面所说的,为什么不编写代码来查询这两个文档呢?

最好的方法是根本不加入XML文件,除非您确实需要XML格式的数据

无法按原样连接XML文件,因此必须解析这两个文件,连接数据,然后从中创建新的XML文件。我假设您正在查找数据,因此最后一步将是超级步骤

例如,您可以使用LINQtoXML从XML文件中获取数据并将其连接起来。例如:

XElement contacts = XElement.Parse(contactsXml);
XElement clients = XElement.Parse(clientsXml);

var contactsWithClients =
  from contact in contacts.Elements("Contact")
  join client in clients.Elements("Client")
  on contact.Attribute("ClientId").Value equals client.Attribute("Id").Value
  into grp
  select new {
    ContactName = contact.Attribute("Name").Value,
    ClientName = grp.Single().Attribute("Name").Value
  };

如果您调用的是web服务,请确保返回值解析为类定义,而不是普通的旧XML。在客户端代码端,定义一个容器类来保存这两个类。然后,可以根据需要对容器类进行XML序列化/反序列化,生成的XML将正确形成。

这将合并文档,而不是加入文档。联系人和客户端之间没有连接,因此结果没有单独的文件有用。API不允许我同时查询这两个文件。我只能从API获取xml文件。每个表一组基本调用,返回xml。@安德鲁:是的,这不是问题。但是,一旦解析了XML文件并加入了数据,就没有必要将数据重新转换为XML格式。