webForumDet fria alternativet

XML, Namespace, XPath ...

1 svar · 353 visningar · startad av l-boy

l-boyMedlem sedan juli 2003223 inlägg
#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)

...
l-boyMedlem sedan juli 2003223 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);
Genererad på 384 ms · cache AV · v20260730165559-full.f96bc7eb