Hi Gregory
Once you have found the nodes that you want it is probably as easy to
use the dom4j API set to read the data
E.g. in XPATH
Node nodePersonName = parmDoc.selectSingleNode( searchPath );
String lName = nodePersonName.valueOf( "LastName" );
String lNameAttrib = nodePersonName.valueOf( "LastName/@Type" );
Or
Node nodePersonName = parmDoc.selectSingleNode( searchPath );
Node lastName = nodePersonName.element("LastName");
String lName = lastName.getText();
String lNameAttrib = nodePersonName.attributeValue( "Type" );
For the xpath queries you can use the node.selectSingleNode to do the
relative queries
So for the city
searchPath = searchPath + "/AdministrativeArea[ @Type='State'
]";
Node nodeCity = parmDoc.selectSingleNode( searchPath );
Becomes
Node nodeCity = countryNode.selectSingleNode(
AdministrativeArea[ @Type='State' ]);
Also do you really need to use the // at the start of the search. This
will seach every node in the document!
Mike Skells
Ebizz consulting
> -----Original Message-----
> From: [EMAIL PROTECTED]
> [mailto:[EMAIL PROTECTED]] On Behalf Of
> Gregory Dulski (s)
> Sent: Thursday 29 August 2002 16:54
> To: '[EMAIL PROTECTED]'
> Subject: [dom4j-user] newbie question
>
>
> I am new to XPATH and I have to convert a string containing
> an XML tree into a document then search the document for
> specific elements and attribute values. Here's a small
> example of my code... I just do not know how to access the
> values of the FirstName, LastName elements and the '@Type'
> attributes of these..
>
> Please help. Thank you.
> Greg
>
> -- XML --
>
> <CAP>
> <RelationshipRecord>
> <Customer>
> <CustomerID/>
> <NameDetails>
> <PersonName>
> <FirstName Type='Contains'/>
> <LastName Type='BeginsWith'>Adl</LastName>
> </PersonName>
> </NameDetails>
> <AddressDetails AddrType='Directory'>
> <Country>
> <CountryName>United States</CountryName>
> <AdministrativeArea Type='State'>
> <AdministrativeAreaName Type='Code'/>
> <Locality Type='BeginsWith'/>
> <PostalCode Type='BeginsWtih'>606</PostalCode>
> </AdminstrativeArea>
> </Country>
> </AddressDetails>
> </Customer>
> </RelationshipRecord>
> </CAP>
>
> -- code --
>
> // create the document from the string
> Document parmDoc = DocumentHelper.parseText( xSearchParms );
> searchPath =
> "//Parms/CAP/RelationshipRecord/Customer/NameDetails/PersonName";
>
> // last name
>
> Node nodePersonName = parmDoc.selectSingleNode( searchPath );
> String lName = nodePersonName.valueOf( "LastName" ); String
> lNameAttrib = nodePersonName.valueOf( "@Type" );
>
> // first name
> Node nodeFname = parmDoc.selectSingleNode( searchPath +
> "/FirstName" ); String fName = nodeFname.valueOf( "FirstName"
> ); String fNameAttrib = nodeFname.valueOf( "@Type" );
>
> // country
> searchPath = "//Parms/CAP/RelationshipRecord/Customer" +
> "/AddressDetails/Country"; Node nodeCountry =
> parmDoc.selectSingleNode( searchPath ); String country =
> nodeCountry.valueOf( "CountryName" );
>
> // city
> searchPath = searchPath + "/AdministrativeArea[ @Type='State'
> ]"; Node nodeCity = parmDoc.selectSingleNode( searchPath );
> String city = nodeCity.valueOf( "Locality" ); String
> cityAttrib = nodeCity.valueOf( "@Type" );
>
>
>
> -------------------------------------------------------
> This sf.net email is sponsored by:ThinkGeek
> Welcome to geek heaven.
> http://thinkgeek.com/sf
> _______________________________________________
> dom4j-user mailing list
> [EMAIL PROTECTED]
> https://lists.sourceforge.net/lists/listinfo/d> om4j-user
>
-------------------------------------------------------
This sf.net email is sponsored by: OSDN - Tired of that same old
cell phone? Get a new here for FREE!
https://www.inphonic.com/r.asp?r=sourceforge1&refcode1=vs3390
_______________________________________________
dom4j-user mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/dom4j-user