okay! here we go. I am just giving an example here that I tested and which demonstrates my problem:
The XML:
<root>
<head>
<node1 attr1="Node1 Attribute">
Node1 Value
</node1>
</head>
</root>
The PERL script that tries to read the attribute:
use XML::LibXML;
$inp = $ARGV[0];
# create object
my $parser = XML::LibXML->new();
# read input XML file
my $inp_tree = $parser->parse_file($inp);
my $inp_root = $inp_tree->getDocumentElement;
my $root_text = $inp_root->toString();
$rule_source = "head/node1@attr1";
my @inp_search_nodes = $inp_root->findnodes($rule_source);
my $inp_search_results = scalar @inp_search_nodes;
if ( 0 == $inp_search_results )
{
print "XPath $rule_source not found! \n";
}
else
{
my $path_text = $inp_search_nodes[ 0 ]->findvalue(".");
print "Xpath ->: $path_text\n";
my $val = $inp_search_nodes[ 0 ]->textContent();
+
print "Value of XPath $rule_source : $val \n";
}
If i search for XPath head/node1@attr1 , the code works fine and fetches the value of the node.
If i use XPath XPath /head/node1@attr1 , the program gives the error :
"/head/node1 not found!"
If i use the Xpath, i get this error:
Invalid expression
If I use the XPath "/head/node1/@attr1", I get this error:
Invalid expression
|