webForumDet fria alternativet

leta i xml-fil

4 svar · 324 visningar · startad av paraxe

paraxeMedlem sedan apr. 2004298 inlägg
#1

Hej.

Har denna xml-fil som jag vill plocka ut värdet ur noden; <definition id="22">värde</definition>

http://www.regelratt.se/definitions.xml

Där attributet id är ett värde.

Har kommit så lång att jag nog laddar xml-dokumentet.

function importXML()
{
	if (document.implementation && document.implementation.createDocument)
	{
		xmlDoc = document.implementation.createDocument("", "", null);
		
	}
	else if (window.ActiveXObject)
	{
		xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
		
 	}
	else
	{
		alert('Your browser can\'t handle this script');
		return;
	}
	xmlDoc.load("/rrs/inc/definitions.xml");
}

Hade tänkt mig en loop i en function som matchar att argument med id attributet.

Någon som känner sig frisk nog att hjälpa till?

paraxeMedlem sedan apr. 2004298 inlägg
#2

Hade tänkt mig nåt sånt här:

function myFunction2(id)
	{
		importXML();
		var toReturn;
		var xml_doc = xmlDoc.getElementsByTagName("definitions");
		var i;
		var elems = xml_doc;
		
		for (i = 0; i < elems.length; i++)
		{
			element = elems.item[i];
			attr = element.getAttribute("id");
			if(attr == id)
				toReturn = element.getAttribute("word");
		}
	
		return toReturn;
	}

Men inget returneras, buhuuu :(

Mvh

Pär

paraxeMedlem sedan apr. 2004298 inlägg
#3

Okej, nu har jag fått det att fungerar med IE.

var xmlDoc
function loadXML()
{
	//load xml file
	// code for IE
	if (window.ActiveXObject)
	{
	xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
	xmlDoc.async=false;
	xmlDoc.load("inc/definitions.xml");
	}
	// code for Mozilla, etc.
	else if (document.implementation &&
	document.implementation.createDocument)
	{
	xmlDoc= document.implementation.createDocument("","",null);
	xmlDoc.load("inc/definitions.xml");
	}
	else
	{
	alert('Your browser cannot handle this script');
	}
}

function testing(id)
{
	loadXML();
	var toReturn;
	var i;
	for(i=0; i < xmlDoc.documentElement.childNodes.length; i++)
	{
		if(xmlDoc.documentElement.childNodes(i).getAttribute("id") == id)
		{
			toReturn = HtmlDecode(xmlDoc.documentElement.childNodes(i).text);
		}
	}
	return toReturn;
}

Men när jag kör med FF så får jag felmeddelande:

xmlDoc.documentElement has no properties

Någon som har en aning om vad som kan vara fel?

Mvh

Pär

Peter SMedlem sedan dec. 20025 484 inlägg
#4

Testa:

window.onload = loadXML;

function testing(id)
{
	var toReturn;
	var i;
	var elms = xmlDoc.getElementsByTagName("definition");
	for(i=0; i < elms.length; i++)
	{
		if(elms[i].getAttribute("id") == id)
		{
			return HtmlDecode(elms[i].childNodes[0].nodeValue);
		}
	}
	return null;
}
paraxeMedlem sedan apr. 2004298 inlägg
#5

Nu är jag nöjd med dig Peter S, du kan din javascript!!

Danke!!!

Genererad på 396 ms · cache AV · v20260730165559-full.f96bc7eb