连接xml文档

时间:2013-04-29 15:40:30

标签: xml linq-to-xml

我创建了一个xml文档..下面是我的代码。

XDocument xDoc = new XDocument();
        //SerializeToFile(getContentResponse, getContentResponse);
        for (int i = 0; i < getContentResponse.PresentationElements.Count(); i++)
        {
            xDoc = new XDocument(
                         new XDeclaration("1.0", "UTF-16", null),
                         new XElement("PresentationElements",
                             new XElement("PresentationElement",
                                 new XComment("Only 3 elements for demo purposes"),
                                 new XElement("ContentReference", getContentResponse.PresentationElements[i].ContentReference),
                                 new XElement("ID", getContentResponse.PresentationElements[i].ID),
                                 new XElement("Name", getContentResponse.PresentationElements[i].Name)
                                )
                                for (int j = 0; j < getContentResponse.PresentationElements[i].PresentationContents.Count(); j++)
        {


        xDoc+=    new XElement("PresentationContents",
                                    new XElement("PresentationContent",
                                        new XElement("Content", getContentResponse.PresentationElements[i].PresentationContents[j].Content),
                                        new XElement("ContentType", getContentResponse.PresentationElements[i].PresentationContents[j].ContentType),
                                        new XElement("Language", getContentResponse.PresentationElements[i].PresentationContents[j].Language),
                                        new XElement("Medium", getContentResponse.PresentationElements[i].PresentationContents[j].Medium)
                                        ))));
                                }
            //check if elments exists.
            StringWriter sw = new StringWriter();
            XmlWriter xWrite = XmlWriter.Create(sw);
            xDoc.Save(xWrite);
            xWrite.Close();
            xDoc.Save(@"C:\Users\aqutbuddin\Documents\Visual Studio 2010\Projects\GetCposOfferPresentationContent\GetCposOfferPresentationContent\Log\getContent.xml", SaveOptions.None);
            Console.WriteLine("Saved");
        }

我真正想做的是我的xml文件应该是这样的。

    <PresentationElements>
    <PresentationElement>
      <ExtensionData />
      <ContentReference>Product View Pack</ContentReference>
      <ID>SHOPPING_ELEMENT:10400044</ID>
      <Name>View Pack PE</Name>
      <PresentationContents>
        <PresentationContent>
          <ExtensionData />
          <Content>View Pack</Content>
          <ContentType>TEXT</ContentType>
          <Language>ENGLISH</Language>
          <Medium>COMPUTER_BROWSER</Medium>
          <Name>Name</Name>
        </PresentationContent>
        <PresentationContent>
          <ExtensionData />
          <Content>Have more control of your home's security and lighting with View Pack from XFINITY Home.</Content>
          <ContentType>TEXT</ContentType>
          <Language>ENGLISH</Language>
          <Medium>COMPUTER_BROWSER</Medium>
          <Name>Description</Name>
        </PresentationContent>
        <PresentationContent>
          <ExtensionData />
          <Content>/images/shopping/devices/xh/view-pack-2.jpg</Content>
          <ContentType>TEXT</ContentType>
          <Language>ENGLISH</Language>
          <Medium>COMPUTER_BROWSER</Medium>
          <Name>Image</Name>
        </PresentationContent>
        <PresentationContent>
          <ExtensionData />
          <Content>The View Pack includes:
2 Lighting / Appliance Controllers
2 Indoor / Outdoor Cameras</Content>
          <ContentType>TEXT</ContentType>
          <Language>ENGLISH</Language>
          <Medium>COMPUTER_BROWSER</Medium>
          <Name>Feature1</Name>
        </PresentationContent>
      </PresentationContents>
    </PresentationElement>
</PresentationElements>

有人能说出我做错了吗?那解决方案应该是什么?

1 个答案:

答案 0 :(得分:0)

我认为您希望用for表达式替换创建内容的from .. in循环:

xDoc = new XDocument(
                         new XDeclaration("1.0", "UTF-16", null),
                         new XElement("PresentationElements",
                             new XElement("PresentationElement",
                                 new XComment("Only 3 elements for demo purposes"),
                                 new XElement("ContentReference", getContentResponse.PresentationElements[i].ContentReference),
                                 new XElement("ID", getContentResponse.PresentationElements[i].ID),
                                 new XElement("Name", getContentResponse.PresentationElements[i].Name),
                                 from el in getContentResponse.PresentationElements[i].PresentationContents select

new XElement("PresentationContents",
                                    new XElement("PresentationContent",
                                        new XElement("Content", el.Content),
                                        new XElement("ContentType", el.ContentType),
                                        new XElement("Language", el.Language),
                                        new XElement("Medium", el.Medium)
                                        ))))
                                 ))));

我不确定你是否想用类似的方法替换外循环,因为我不确定你是否要创建多个文档。