EchOMedlem sedan aug. 2001112 inlägg Hoj!
Har ett litet problem med att hämta ut ett värde ur en xml fil..
när xml filen ser ut så här
<PostDetail>
<PostDate>
2002-01-14
</PostDate>
<EndDate>
2002-01-31
</EndDate>
<PostStamp>
2002-09-18 13:55:33
</PostStamp>
</PostDetail>
kan jag ju hämta ut värdet postdate på följande sätt:
PostDate = objJobNode.selectSingleNode("PostDetail/PostDate").nodeTypedValue
men hur gör jag för att hämta ut värden när xml filen ser ut så här? Hur får jag tex ut datumet?
<attribute attributeid="A8F84E17-7ABB-4234-8C55-E7E8B0CF43AA" name="InDatum" internalname="InDateJ" valuetypeinternalname="TextValue" valuetypename="Text" decimalvalue="0.00000" textvalue="2002-09-10 13:54:11" booleanvalue="false" haschanged="false" isrequired="false" maxlength="8000" datetimevalue="1900-01-01 00:00" unit="">
<choices />
</attribute>
tohaMedlem sedan dec. 1999707 inlägg datum = objJobNode.selectSingleNode("attribute/@datetimevalue").text
EchOMedlem sedan aug. 2001112 inlägg Fick det inte att fungera. Här är xmlfilen:
http://www.vexla.se/jonaslabb/mp.xml
Set objNodes = objXMLDOM.selectNodes("/ads/ad")
For Each objJobNode In objNodes
datum = objJobNode.selectSingleNode("attribute/@datetimevalue").text
Next
Vore tacksam för all hjälp!
UlfTMedlem sedan maj 20018 027 inlägg Du skulle kunna pröva:
Set objNodes = objXMLDOM.selectNodes("/ads/ad")
For Each objJobNode In objNodes
Set objAttribut = objJobNode.selectSingleNode("attribute")
[b]datum = objAttribut.getAttribute("datetimevalue")[/b]
Next
EchOMedlem sedan aug. 2001112 inlägg Nja.. fick det inte att fungera...
Fler förslag...
Hej!
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;
UlfTMedlem sedan maj 20018 027 inlägg 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.
EchOMedlem sedan aug. 2001112 inlägg Jag har följande kod:
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