I have the following XML and i want to convert the contents to something along the lines of the following format.
PatientId: 123455, IdScheme: Test ....
<?xml version="1.0"?>
<gls:TheDocument xmlns:pbr="http://www.something.com" 
xmlns:gls="http://www.testsomething.com" 
xmlns:cnr="http://www.organisation.com" 
xmlns:h="http://www.w3.org/1999/xhtml" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" schemaVersion="2.8">
 <gls:PatientDem>
        <cnr:PatientId>
            <cnr:IdValue>123455</cnr:IdValue>
            <cnr:IdScheme>TEST</cnr:IdScheme>
            <cnr:IdType>PRN</cnr:IdType>
        </cnr:PatientId>
        <cnr:PatientName>
            <cnr:Name>
                <cnr:Title>Mr</cnr:Title>
                <cnr:GivenName>Joe</cnr:GivenName>
                <cnr:FamilyName>Wood</cnr:FamilyName>
            </cnr:Name>
            <cnr:NameType>Current Name</cnr:NameType>
        </cnr:PatientName>
        <cnr:PatientAddress>
            <cnr:Address>
                <cnr:AddressLine>57 High Street</cnr:AddressLine>
                <cnr:AddressLine>London</cnr:AddressLine>
            </cnr:Address>
            <cnr:PostCode>WC1E 7HU</cnr:PostCode>
            <cnr:AddressType>Current Residence</cnr:AddressType>
        </cnr:PatientAddress>
        <cnr:DateOfBirth>1969-11-02</cnr:DateOfBirth>
        <cnr:Sex>M</cnr:Sex>
    </gls:PatientDem>
    <pbr:PatientAdminRef>
            <pbr:Referrer>
              <pbr:RefGP>
                <cnr:GpcpName>
                  <cnr:FullName>DR SMITH</cnr:FullName>
                </cnr:GpcpName>
                <cnr:TheOrganisation>
                  <cnr:OrganisationId>
                    <cnr:IdValue>52522</cnr:IdValue>
                    <cnr:IdScheme>PracticeID</cnr:IdScheme>
                    <cnr:IdType>Healthcare Organisation</cnr:IdType>
                  </cnr:OrganisationId>
                  <cnr:OrganisationName>National Health 
                  Service</cnr:OrganisationName>
                  <cnr:OrganisationAddress>
                    <cnr:TheAddress>
                      <cnr:AddressLine1>Centre House</cnr:AddressLine1>
                      <cnr:AddressLine2>799 Chichester 
                         Street</cnr:AddressLine2>
                      <cnr:AddressLine3>London</cnr:AddressLine3>
                    </cnr:TheAddress>
                    <cnr:AddressType>Practice Address</cnr:AddressType>
                  </cnr:OrganisationAddress>
                  <cnr:OrganisationTelecom>
                    <cnr:TelephoneNumber>016190542350</cnr:TelephoneNumber>
                    <cnr:TeleType>Voice</cnr:TeleType>
                     </cnr:OrganisationTelecom>
                </cnr:TheOrganisation>
              </pbr:RefGP>
            </pbr:Referrer>
         </pbr:PatientAdminRef>
          </gls:TheDocument>
So is it possible to do this? I had a go at doing this but I know for a fact i am doing it wrong as it cannot produce the result i want so any help will be much appreciated:
C# Code
XDocument doc = XDocument.Parse(xml);
XElement root = doc.Root;
XNamespace glsNs = root.GetNamespaceOfPrefix("gls");
XNamespace cnrNS = root.GetNamespaceOfPrefix("cnr");
XNamespace pbrNS = root.GetNamespaceOfPrefix("pbr");
var output = new StringBuilder();
foreach (var result in doc.Descendants(gls + "PatientDem").Select(x => new {
  Key = (string)x.Name.LocalName,
  Value = x.Value
 }))
 {
  output.AppendLine($"{result.key} : {result.value}");
}
 
    