help with extracting nodes and their children as text

  • Thread starter Robert Fentress
  • Start date
R

Robert Fentress

I'm loading an xml data file and then trying to take a particular node
and add it, as html, to an element on my page using inner HTML. The
xml is like what is below, with the ... representing eliminated
detail:

<?xml version="1.0" encoding="iso-8859-1"?>
<table>
<descriptions>
<fielddesc id="1">
...
</fielddesc>
...
</descriptions>
<recordset>
<record id="1">
<field id="1">1</field>
<field id="2">Hydrogen</field>
<field id="3">H</field>
<field id="4">[not applicable]</field>
<field id="5">[not applicable]</field>
<field id="6">[not applicable]</field>
<field id="7">1s<sup>1</sup></field>
</record>
...
</recordset>
</table>

The problem comes with id 7 above. I want to get everything that is
contained in that field and use it in my page so that the <sup> html
tag is used. Here are some things I've tried:

recordset = table.getElementsByTagName('recordset')[0].getElementsByTagName('record');
valueIwant = recordset[1].getElementsByTagName('field')[7].firstChild.data;
(This only gets everything up to the <sip> tag)

recordset = table.getElementsByTagName('recordset')[0].getElementsByTagName('record');
valueIwant = recordset[1].getElementsByTagName('field')[7].text;
(This only works on IE and it doesn't format the contents in the <sup>
tag)

Anybody have some suggestions on how to do what I want?

Thanks,
Rob
 
A

Antenna

Am I missing something? You write: valueIwant = recordset[1] ...
('field')[7] ...

Shouldn't that be recordset[0] and ...('field')[6] ?



recordset =
table.getElementsByTagName('recordset')[0].getElementsByTagName('record');
 
M

Martin Honnen

Robert said:
I'm loading an xml data file and then trying to take a particular node
and add it, as html, to an element on my page using inner HTML. The
xml is like what is below, with the ... representing eliminated
detail:

<?xml version="1.0" encoding="iso-8859-1"?>
<table>
<descriptions>
<fielddesc id="1">
...
</fielddesc>
...
</descriptions>
<recordset>
<record id="1">
<field id="1">1</field>
<field id="2">Hydrogen</field>
<field id="3">H</field>
<field id="4">[not applicable]</field>
<field id="5">[not applicable]</field>
<field id="6">[not applicable]</field>
<field id="7">1s<sup>1</sup></field>
</record>
...
</recordset>
</table>

The problem comes with id 7 above. I want to get everything that is
contained in that field and use it in my page so that the <sup> html
tag is used. Here are some things I've tried:

recordset = table.getElementsByTagName('recordset')[0].getElementsByTagName('record');
valueIwant = recordset[1].getElementsByTagName('field')[7].firstChild.data;
(This only gets everything up to the <sip> tag)

recordset = table.getElementsByTagName('recordset')[0].getElementsByTagName('record');
valueIwant = recordset[1].getElementsByTagName('field')[7].text;
(This only works on IE and it doesn't format the contents in the <sup>
tag)

Anybody have some suggestions on how to do what I want?

Well, an XML element with tagname sup is not an HTML element, if you
target XHTML you would need
<sup xmlns="http://www.w3.org/1999/xhtml">...</sup>
that way a browser like Mozilla would allow you to import that node from
the XML document into an XHTML document:
http://home.arcor.de/martin.honnen/javascript/200402/test20040206.xhtml

IE however doesn't understand XHTML and doesn't support importNode so
there you are better off trying to insert some snippet of markup using
insertAdjacentHTML or innerHTML. XSLT transformations might be a way
with IE to create that snippet of HTML markup from your XML.
 
R

Robert Fentress

Antenna said:
Am I missing something? You write: valueIwant = recordset[1] ...
('field')[7] ...

Shouldn't that be recordset[0] and ...('field')[6] ?

Yes. I realized that after I sent it. Doesn't affect the issue though.

Rob
 
R

Robert Fentress

Martin Honnen said:
Well, an XML element with tagname sup is not an HTML element, if you
target XHTML you would need
<sup xmlns="http://www.w3.org/1999/xhtml">...</sup>
that way a browser like Mozilla would allow you to import that node from
the XML document into an XHTML document:
http://home.arcor.de/martin.honnen/javascript/200402/test20040206.xhtml

IE however doesn't understand XHTML and doesn't support importNode so
there you are better off trying to insert some snippet of markup using
insertAdjacentHTML or innerHTML. XSLT transformations might be a way
with IE to create that snippet of HTML markup from your XML.

Thanks for your help Martin. I'll try to do some research on XSLT so
I can get it to work on IE too.

Rob
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,995
Messages
2,570,230
Members
46,816
Latest member
SapanaCarpetStudio

Latest Threads

Top