XML, Namespace, XPath ...

.NET

1 svar · 369 visningar · startad av l-boy

Medlem sedan juli 2003221 inlägg
Trådstart#1

Har en xml som ser ut såhär:


<?xml version="1.0" encoding="utf-8"?>
<MicroGroupItemListControl xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://webservices.masterpiece.dk/webservices/SiteCommerce">
  <OrderByType>Name</OrderByType>
  <SubgroupName>Aktiviteter</SubgroupName>
  <SubjectName>Bål / Grillning</SubjectName>
  <MicroGroupItems>
    <MicroGroupInfo>
      <MicroGroupName>Bål  Och Grill</MicroGroupName>
      <CommerceProductItems>
        <CommerceProductItem>
          <CommerceItemGuid>330303</CommerceItemGuid>
        </CommerceProductItem>
        <CommerceProductItem>
          <CommerceItemGuid>330304</CommerceItemGuid>
        </CommerceProductItem>
...

Försöker med hjälp av xpath att plocka ut t.ex alla noder under CommerceProductItems men det vill sig inte. Har läst mig till att det har med namespaces att göra men kan ändå inte få till det.

Har kommit så här långt men nu vet jag inte hur jag skall bära mig åt...


XmlDocument d = new XmlDocument();

d.Load(xmlurl);

XmlNamespaceManager nsm = new XmlNamespaceManager(d.NameTable);
nsm.AddNamespace("xsi", "http://www.w3.org/2001/XMLSchema-instance");
nsm.AddNamespace("xsd", "http://www.w3.org/2001/XMLSchema");

XmlNodeList nodelist = d.SelectNodes("???");

foreach (XmlNode node in nodelist)

...
Medlem sedan juli 2003221 inlägg
#2

Löste sig. Funkar fint med t.ex:


nsm.AddNamespace("ns", "http://webservices.masterpiece.dk/webservices/SiteCommerce");

XmlNodeList nodelist = d.SelectNodes("/ns:MicroGroupItemListControl/ns:MicroGroupItems/ns:MicroGroupInfo/ns:CommerceProductItems/ns:CommerceProductItem[ns:CommerceItemGuid=330303, nsm);
258 ms totalt · 4 externa anrop · v20260731065814-full.d34c6d5a
119 ms — deklarationer (db)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)
127 ms — ändringar (db)