Link to home
Start Free TrialLog in
Avatar of Jean Holland
Jean HollandFlag for United States of America

asked on

Format of Request Document - Can you have multiple entries with same name?

I'm getting "duplicate attribute" error when attempting to create this document.  Is it not allowed to have the multiple Filter Field entries?
Jean

<?xml version="1.0" encoding="utf-8" standalone="no"?>
<ApiDocument xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://microsoft.com/wsdl/types/">
  <Request>
    <Settings></Settings>
    <Filters>
      <Filter Field="FiscalDate" Operator="Greater than or equal" Value="2017-06-19T00:00:00.000" />
      <Filter Field="FiscalDate" Operator="Less than" Value="2017-06-20T00:00:00.000" />
      <Filter Field="Location" Operator="Equal" Value="100" />
    </Filters>
    <SortDescriptions>
      <SortDescription Name="FiscalDate" Direction="Ascending" />
    </SortDescriptions>
  </Request>
</ApiDocument>
ASKER CERTIFIED SOLUTION
Avatar of zc2
zc2
Flag of United States of America image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Avatar of Jean Holland

ASKER

I am getting duplicate attribute when attempting to create the listed document.  

Here's the code.  Perhaps I am confusing Elements and Attributes.  This is C#

        XDocument RequestFiscalSummaryDocument = new XDocument(new XDeclaration("1.0", "UTF-8", "no"));

            XElement APIDoc = new XElement(ns + "ApiDocument",
                    new XAttribute(XNamespace.Xmlns + "xsi", xsiNs));

            RequestFiscalSummaryDocument.Add(APIDoc);

            XElement RequestElement = new XElement(ns + "Request", string.Empty);

            APIDoc.Add(RequestElement);

            XElement SettingsElement = new XElement(ns + "Settings", string.Empty);

            RequestElement.Add(SettingsElement);

            XElement FiltersGroupElement = new XElement(ns + "Filters", string.Empty);

            RequestElement.Add(FiltersGroupElement);

            XElement FilterItemElement = new XElement(ns + "Filter");

            FiltersGroupElement.Add(FilterItemElement);

            XAttribute FilterAtt = new XAttribute("Field", "FiscalDate");
            XAttribute OperatorAtt = new XAttribute("Operator", "Greater than or equal");
            XAttribute ValueAtt = new XAttribute("Value", BeginDate);

            FilterItemElement.Add(FilterAtt);
            FilterItemElement.Add(OperatorAtt);
            FilterItemElement.Add(ValueAtt);


            XElement FilterItemElement2 = new XElement(ns + "Filter");

            FiltersGroupElement.Add(FilterItemElement2);

            XAttribute FilterAtt2 = new XAttribute("Field", "FiscalDate");
            XAttribute OperatorAtt2 = new XAttribute("Operator", "Less than");
            XAttribute ValueAtt2 = new XAttribute("Value", EndDate);

            FilterItemElement.Add(FilterAtt2);
            FilterItemElement.Add(OperatorAtt2);
            FilterItemElement.Add(ValueAtt2);


            XElement FilterItemElement3 = new XElement(ns + "Filter");

            FiltersGroupElement.Add(FilterItemElement3);

            XAttribute FilterAtt3 = new XAttribute("Field", "LocationCode");
            XAttribute OperatorAtt3 = new XAttribute("Operator", "Equal");
            XAttribute ValueAtt3 = new XAttribute("Value", LocCode);

            FilterItemElement.Add(FilterAtt3);
            FilterItemElement.Add(OperatorAtt3);
            FilterItemElement.Add(ValueAtt3);


            XElement SortGroupElement = new XElement(ns + "SortDescriptions", string.Empty);

            RequestElement.Add(SortGroupElement);

            int SortGroupSize = 1;

            for (int j = 0; j < SortGroupSize; j++)
            {
                XElement SortDescriptionElement = new XElement(ns + "SortDescription");

                SortGroupElement.Add(SortDescriptionElement);

                XAttribute SortFieldName = new XAttribute("Name", "FiscalDate");

                SortDescriptionElement.Add(SortFieldName);


                {
                    XAttribute SortDirectionAtt = new XAttribute("Direction", "Ascending");
                    SortDescriptionElement.Add(SortDirectionAtt);
                }

            }

            return RequestFiscalSummaryDocument;
        }
It fails here:

 FilterItemElement.Add(FilterAtt2);
I see my error.  It should be FilterItemElement2.Add and so forth.  I believe that this will resolve my problem.  Will test and post results.
zc helped me discover the error in my code.