0

I am working to parse xml. I have the following XML and want to extract BrowseNodeId and Name from BrowseNode enclosed in Children.

<BrowseNodeLookupResponse xmlns="http://webservices.amazon.com/AWSECommerceService/2011-08-01">
<OperationRequest>
    <RequestId>c405a82f-1282-4c7b-af88-cbe9f30b8fd9</RequestId>
    <Arguments>
        <Argument Name="Operation" Value="BrowseNodeLookup"/>
        <Argument Name="Service" Value="AWSECommerceService"/>
        <Argument Name="Signature" Value="IXCswiotUNwNgo="/>
        <Argument Name="AssociateTag" Value="werd-20"/>
        <Argument Name="Version" Value="2011-08-01"/>
        <Argument Name="BrowseNodeId" Value="493964"/>
        <Argument Name="AWSAccessKeyId" Value="RV33OHQ"/>
        <Argument Name="Timestamp" Value="2014-11-25T09:12:26Z"/>
    </Arguments>
    <RequestProcessingTime>0.002923</RequestProcessingTime>
</OperationRequest>
<BrowseNodes>
    <Request>
        <IsValid>True</IsValid>
        <BrowseNodeLookupRequest>
            <BrowseNodeId>493964</BrowseNodeId>
        </BrowseNodeLookupRequest>
    </Request>
    <BrowseNode>
        <BrowseNodeId>493964</BrowseNodeId>
        <Name>Categories</Name>
        <IsCategoryRoot>1</IsCategoryRoot>
        <Children>
            <BrowseNode>
                <BrowseNodeId>281407</BrowseNodeId>
                <Name>Accessories &amp; Supplies</Name>
            </BrowseNode>
            <BrowseNode>
                <BrowseNodeId>502394</BrowseNodeId>
                <Name>Camera &amp; Photo</Name>
            </BrowseNode>
            <BrowseNode>
                <BrowseNodeId>2811119011</BrowseNodeId>
                <Name>Cell Phones &amp; Accessories</Name>
            </BrowseNode>
            <BrowseNode>
                <BrowseNodeId>172574</BrowseNodeId>
                <Name>Office Electronics</Name>
            </BrowseNode>
            <BrowseNode>
                <BrowseNodeId>172623</BrowseNodeId>
                <Name>Portable Audio &amp; Video</Name>
            </BrowseNode>
            <BrowseNode>
                <BrowseNodeId>524136</BrowseNodeId>
                <Name>Security &amp; Surveillance</Name>
            </BrowseNode>
            <BrowseNode>
                <BrowseNodeId>16285901</BrowseNodeId>
                <Name>Service &amp; Replacement Plans</Name>
            </BrowseNode>               
            <BrowseNode>
                <BrowseNodeId>3248684011</BrowseNodeId>
                <Name>Car &amp; Vehicle Electronics</Name>
            </BrowseNode>
            <BrowseNode>
                <BrowseNodeId>7926841011</BrowseNodeId>
                <Name>Video Game Consoles &amp; Accessories</Name>
            </BrowseNode>
            <BrowseNode>
                <BrowseNodeId>10048700011</BrowseNodeId>
                <Name>Wearable Technology</Name>
            </BrowseNode>
        </Children>
        <Ancestors>
            <BrowseNode>
                <BrowseNodeId>172282</BrowseNodeId>
                <Name>Electronics</Name>
            </BrowseNode>
        </Ancestors>
    </BrowseNode>
</BrowseNodes>

I have written the following code but it not works

var xDocument = XDocument.Parse(xmlString);
var data = from e in xDocument.Descendants("BrowseNodes")
                              .Descendants("BrowseNode")
                              .Descendants("Children")
                              .Descendants("BrowseNode")                       
           select new
           {
               browseNodeId = e.Element("BrowseNodeId").Value,
               browseNodeName = e.Element("Name").Value
           };

It returns empty enum. Please help me. Thanks

2
  • Empty enum? You mean an empty IEnumerable? Commented Nov 25, 2014 at 11:40
  • Sorry for enum. Its IEnumerable, data var is empty. Commented Nov 25, 2014 at 11:43

1 Answer 1

2

You have a namespace, xmlns, in your xml input. So the name of your elements are not, for example BrowseNodes, but xmlns + BrowseNodes where,

xmlns="http://webservices.amazon.com/AWSECommerceService/2011-08-01"

That's why your query doesn't find the elements.

You can use something like:

var ns = xdoc.Root.GetDefaultNamespace();
var data = from e in xDocument.Descendants(ns + "BrowseNodes")
           ...
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.