Go Premium for a chance to win a PS4. Enter to Win

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 645
  • Last Modified:

perl, how to get to xml child nodes

<house>
  <rented>
    <name>james</name>
    <name>bob</bob>
  </rented>
  <owned>
    <name>dave</name>
    <name>charles</name>
  </owned>
</house>

@ownedHouses = $xml_root->getElementsByTagName("name");  #will retrieve names from both <rented> and <owned> houses.  How do I get just the owned house ones.
0
rgbcof
Asked:
rgbcof
1 Solution
 
clockwatcherCommented:
Based on the getElementsByTagName call, I'm assuming you're using XML::DOM to parse your xml.  If that's the case, here's an example of returning the text within the name elements which are within owned elements.
use XML::DOM;
my $parser = new XML::DOM::Parser;

my $doc = $parser->parse(qq~
<house>
  <rented>
    <name>james</name>
    <name>bob</name>
  </rented>
  <owned>
    <name>dave</name>
    <name>charles</name>
  </owned>
</house>
~);

for my $home ($doc->getElementsByTagName("owned")) {
	for my $name ($home->getElementsByTagName("name")) {
		for my $child ($name->getChildNodes) {
			printf( "%s\n", $child->getData) if $child->getNodeType eq TEXT_NODE;
		
		} 
	}
}

Open in new window

0
 
rgbcofAuthor Commented:
Ah, getChildNodes was what I was looking for.  That's great.  Thanks.
0

Featured Post

Free Tool: Subnet Calculator

The subnet calculator helps you design networks by taking an IP address and network mask and returning information such as network, broadcast address, and host range.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

Tackle projects and never again get stuck behind a technical roadblock.
Join Now