【问题标题】:Concatenate an xml document连接一个 xml 文档
【发布时间】:2013-04-29 15:40:29
【问题描述】:

我创建了一个 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>

谁能建议我做错了什么?解决方案应该是什么?

【问题讨论】:

    标签: xml linq-to-xml


    【解决方案1】:

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

    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)
                                            ))))
                                     ))));
    

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

    【讨论】:

    • 一个展示元素中可以有多个展示内容元素
    猜你喜欢
    • 1970-01-01
    • 2012-04-29
    • 1970-01-01
    • 2012-01-05
    • 2021-01-11
    • 1970-01-01
    • 2011-05-02
    • 2021-11-16
    • 1970-01-01
    相关资源
    最近更新 更多