L
Leila
Hi folks,
I have a fairly complex xml document which looks like this:
<my:InsideView xmlns:my="http://schemas.microsoft.com/office/infopath/2003/myXSD/2004-08-02T14:22:59"
xml:lang="en-us">
<my:Title>Title in here</my:Title>
<my:StandFirst>Standfirst in here</my:StandFirst>
<my:RelatedMaterial>
<my:Image>/images/InsideView/norma.gif</my:Image>
<my:EmphasisedText>picture of norma</my:EmphasisedText>
<my:AlternateText>alternate text</my:AlternateText>
<mylaceHolderTag><!-- image one --></mylaceHolderTag>
</my:RelatedMaterial>
<my:RelatedMaterial>
<my:Image>/images/InsideView/elena.gif</my:Image>
<my:EmphasisedText>another picture of elena</my:EmphasisedText>
<my:AlternateText></my:AlternateText>
<mylaceHolderTag><!-- image two --></mylaceHolderTag>
</my:RelatedMaterial>
<my:Body>Main body text for newsletter. I want to place image one in
here so I will use a placeholder, like this <!-- image one -->
to search and replace any of these tags with the image in
<my:image></my:Body>
<my:RelatedLinks>
<my:URL>http://www.google.com</my:URL>
<my:URLText>this is a link to google</my:URLText>
</my:RelatedLinks>
<my:RelatedLinks>
<my:URL>http://www.bbc.co.uk</my:URL>
<my:URLText>this is a link to </my:URLText>
</my:RelatedLinks>
</my:InsideView>
I am want to use my javascript function to load the XML document and
work with the nodes within the document. My aim is to be able to loop
through the <RelatedMaterial> node, and see if any of the tags placed
in <mylaceHolderTag> can be found in the content within <my:Body>.
If a placeholder is found, then I want to replace the placeholder in
<my:Body> with the image in <my:image>.
Quite an ambitious task. Can anybody tell me what is wrong with my
javascript function:
function loadXML(xmlDoc, divName) {
var display;
var xmldoc = new ActiveXObject("Microsoft.XMLDOM");
xmldoc.async = false;
xmldoc.load(xmlDoc);
strBody = xmldoc.getElementsByTagName("Body");
alert(strBody.length); // DISPLAYS 0
alert(strBody[0].firstChild.nodeValue); // error: object expected
myNodes = _XML.getElementsByTagName("RelatedMaterial");
alert(myNodes.length) // displays 0
//Extract the different values using a loop.
for( var counter = 0; counter < myNodes.length; counter++ ) {
display += myNodes.item(counter).firstChild.nodeValue + "\n";
}
alert(display) // error: undefined
document.all.main.innerHTML = display;
}
I have a fairly complex xml document which looks like this:
<my:InsideView xmlns:my="http://schemas.microsoft.com/office/infopath/2003/myXSD/2004-08-02T14:22:59"
xml:lang="en-us">
<my:Title>Title in here</my:Title>
<my:StandFirst>Standfirst in here</my:StandFirst>
<my:RelatedMaterial>
<my:Image>/images/InsideView/norma.gif</my:Image>
<my:EmphasisedText>picture of norma</my:EmphasisedText>
<my:AlternateText>alternate text</my:AlternateText>
<mylaceHolderTag><!-- image one --></mylaceHolderTag>
</my:RelatedMaterial>
<my:RelatedMaterial>
<my:Image>/images/InsideView/elena.gif</my:Image>
<my:EmphasisedText>another picture of elena</my:EmphasisedText>
<my:AlternateText></my:AlternateText>
<mylaceHolderTag><!-- image two --></mylaceHolderTag>
</my:RelatedMaterial>
<my:Body>Main body text for newsletter. I want to place image one in
here so I will use a placeholder, like this <!-- image one -->
to search and replace any of these tags with the image in
<my:image></my:Body>
<my:RelatedLinks>
<my:URL>http://www.google.com</my:URL>
<my:URLText>this is a link to google</my:URLText>
</my:RelatedLinks>
<my:RelatedLinks>
<my:URL>http://www.bbc.co.uk</my:URL>
<my:URLText>this is a link to </my:URLText>
</my:RelatedLinks>
</my:InsideView>
I am want to use my javascript function to load the XML document and
work with the nodes within the document. My aim is to be able to loop
through the <RelatedMaterial> node, and see if any of the tags placed
in <mylaceHolderTag> can be found in the content within <my:Body>.
If a placeholder is found, then I want to replace the placeholder in
<my:Body> with the image in <my:image>.
Quite an ambitious task. Can anybody tell me what is wrong with my
javascript function:
function loadXML(xmlDoc, divName) {
var display;
var xmldoc = new ActiveXObject("Microsoft.XMLDOM");
xmldoc.async = false;
xmldoc.load(xmlDoc);
strBody = xmldoc.getElementsByTagName("Body");
alert(strBody.length); // DISPLAYS 0
alert(strBody[0].firstChild.nodeValue); // error: object expected
myNodes = _XML.getElementsByTagName("RelatedMaterial");
alert(myNodes.length) // displays 0
//Extract the different values using a loop.
for( var counter = 0; counter < myNodes.length; counter++ ) {
display += myNodes.item(counter).firstChild.nodeValue + "\n";
}
alert(display) // error: undefined
document.all.main.innerHTML = display;
}