webForumDet fria alternativet

XML, Namespace, XPath ...

.NET

1 svar · 355 visningar · startad av l-boy

Medlem sedan juli 2003221 inlägg
Frågan#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);
273 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
124 ms — deklarationer (db)
0 ms — hämta statistik (cache)
138 ms — hämta tråd, inlägg och bilagor (db)
131 ms — ändringar (db)