Set objNodes = objXMLDOM.selectNodes("/ads/ad")
For Each objJobNode In objNodes
datum = objJobNode.selectSingleNode("attribute/@datetimevalue").text
Next
Set objNodes = objXMLDOM.selectNodes("/ads/ad")
For Each objJobNode In objNodes
Set objAttribut = objJobNode.selectSingleNode("attribute")
[b]datum = objAttribut.getAttribute("datetimevalue")[/b]
Next
Märkligt XML-dokument du fått att jobba med tycker jag! Att kalla noderna "attribute" känns verkligen förvirrande!!
Jag är ingen hävert på ASP, men om du är det kan du säkert översätta min Delphi-kod - annars får du tjoa till så reder vi nog ut det...
Nedanstående kod listar bara alla "attribute"-noders nodeName-attribut och textValue-attribut i en listkomponent i ett Delphi-formulär i min testapplikation. Vad du måste göra är förstås att gå igenom alla noder med tagName = "attribute" och leta efter exempelvis den som har attributet name = "JobbInDatum" och där hämta värdet i attributet textvalue.
procedure TForm1.Button1Click(Sender: TObject);
var
doc: IXMLDOMDocument;
node: IXMLDOMElement;
l: IXMLDOMNodeList;
i: integer;
begin
doc := CoDOMDocument30.Create;
doc.load('mp.xml');
node := doc.documentElement;
l := node.selectNodes('//attribute');
for i := 0 to l.length - 1 do
lst.items.Add(
l.item[i].nodeName + ' ' +
(l.item[i] as IXMLDOMElement).GetAttribute('name') + ' ' +
(l.item[i] as IXMLDOMElement).GetAttribute('textvalue')
)
end;
På följande sätt fick jag ut alla datum ur första "attributes":
Dim pDoc As DOMDocument
Dim pNode As IXMLDOMNode
Dim attNode As IXMLDOMNode
Dim pAttr As IXMLDOMAttribute
Set pDoc = New DOMDocument
pDoc.Load ("c:\mp.xml")
Set pNode = pDoc.selectSingleNode("//ads/ad/attributes")
For Each attNode In pNode.childNodes
If attNode.nodeName = "attribute" Then
Set pAttr = attNode.Attributes.getNamedItem("datetimevalue")
Text1.Text = Text1 & vbCrLf & pAttr.Value
End If
Next
Notera att du inom varje "ad"-element har ett "attributes"-element, vilket i sin tur innehåller ett antal "attribute"-element. Det är lätt att tappa bort sig i xml-trädet när noderna har så likartade namn.
Set pNode2 = objXMLDOM.selectSingleNode("/ads")
For Each attNode2 In pNode2.childNodes
Set pAttr5= attNode2.Attributes.getNamedItem("rownr")
nodid = pAttr5.Value
Response.Write attNode2.nodeName &": "&nodid&" <br>"
Set pNode = objXMLDOM.selectSingleNode("//ads/ad/attributes")
For Each attNode In pNode.childNodes
Response.Write attNode.nodeName &"<br>"
' If attNode2.nodeName = "attributes" Then
'Response.Write "japp"
'owe = attNode.Jobbtitel
Set pAttr = attNode.Attributes.getNamedItem("datetimevalue")
Set pAttr2 = attNode.Attributes.getNamedItem("textvalue")
Set pAttr3 = attNode.Attributes.getNamedItem("name")
text = pAttr.Value
text2 = pAttr2.Value
text3 = pAttr3.Value
text = text + "<br>"
Response.Write text3&":<br>"
Response.Write text2 &"<br>"
Response.Write owe &"<br><br>"
'Response.Write "<br>_______________________________________________<br>"
next
Next
Response.Write "<br><br>antal noder: "&c1&"<br><br>"
end function
När jag loopar igenom alla noder i ads med attNode2 får jag rätt antal noder, id osv. Men hur gör jag sedan för att hämta ut alla attribut från resp nod? När jag gör följande i varje childnod
Set pNode = objXMLDOM.selectSingleNode("//ads/ad/attributes")
för att hämta ut attributen hämtar den bara ut information från den första noden hela tiden. Hur gör jag för att stega vidare i noden och hämta ut alla attribut för nod 2 osv.
@EchO
389 ms totalt · 4 externa anrop · v20260731065814-full.51f67c91