How to select a specific XML node with XPath
Hi,
I'm trying to a select a specific node from my XML data using the XPath Builder. For example, say I have a process variable 'xmlData' with the
following contents:
User 1
101
User 2
102
I can successfully use the following expression to retrieve the name of
a specific user:
(/process_data/xmlData/users/user[userid='102'])/name
The problem is I need to use another process variable for the selection
key. For Example:
(/process_data/xmlData/users/user[userid=/process_data/@userId])/name
But this always returns null. I've tried surrounding /process_data/@userId
with single quotes, double quotes, and event {$..$}.
Any help would be greatly appreciated.
Thanks.
Hi,
Thanks for the quick replies. I gave a bit of a bad example, as the
userid in my data is really a string, not a number.
A better example is:
User 1
user1
User 2
user2
I can get the following to work perfectly:
(/process_data/xmlData/users/user[userid='user2'])/name
but I can't get it to work with
/process_data/@userId = "user2"
(/process_data/xmlData/users/user[userid=/process_data/@userId])/name
Thanks.
Similar Messages
-
XML/XPath question--how to select a range of elements with XPath?
Hi there,
I have an XML DOM in memory. I need to do hold it and issue only parts of it to my client app in "pages". Each page would be a self-contained XML doc, but would be a subset of the original doc. So for instance the first page is top-level elements 1-5. 2nd page would be 6-10 etc. Is this solution best solved with XPath? If not, what's the best way? If so, I have the following question:
Is there a way to use XPath to select a range of nodes based on position within the document? I know I can do an XPath query that will return a single Node based on position. So for example if I wanted the first node in some XML Book Catalog I could do XPathAPI.selectSingleNode(doc, "/Catalog/Book[position()=1]"); I could wrap the previous call in a loop, replacing the numeric literal each time, but that seems horribly inefficient.
Any ideas? Thanks much in advance!
Toby BuckleyYour question is about marking a range of cells. 99% of the code posted has nothing to do with this. If you want to create a simple table for test purposes then just do:
JTable table = new JTable(10, 5);
JScrollPane scrollPane = new JScrollPane( table );
getContentPane().add( scrollPane );
In three line of code you have a simple demo program.
When I leave the mouse button again, these bunch/range of cells shall stay "marked". table.setCellSelectionEnabled( true );
and I'd like to obtain, say, a vector of a vector containing just those data marked beforeUse the getSelectedRows() and getSelectedColumns() methods for this information. I would suggest you create a Point object to reflect the row/column position and then add the point to an ArrayList. -
How to count number of xml nodes , with JSTL XML api?
I am trying to count the number of nodes in the parsed xml by doing this:
<x:out select="count($doc/Items/Item)"/>
There are about 50 item nodes in the source xml, but I get the output as 0
Is this syntax correct?
I searched every where but couldn't find the xpath syntax to be used inside jstl xml tags, I was assuming that it's the same as the syntax used in xsltThank you for your reply, sorry I wasnt very clear with my question.
I want to count the number of nodes inside the jsp file , not inside the xslt file.
My xml file is something like this for example:
<?xml version="1.0" encoding="UTF-8"?>
<DocumentRootNode>
<Products>
<Item>1</Item>
<Item>2</Item>
<Item>3</Item>
<Products>
</DocumentRootNode>
I want the count of number of Item nodes , in the JSP file.
I'm doing something like this in the JSP but it gives 0 instead of 3:
<c:import url="source.xml" var="xml" charEncoding="UTF-8"/>
<x:parse doc="${xml}" var="xml_doc"/>
<x:out select="count($xml_doc/Products/Item)"/>
null -
Currently I have an Enterprise Project which has 6 custom timelines and I want to know how to select a specific timeline to be displayed on the Project specific SharePoint site.
I'll provide some background for you so you understand my issues... I have created a "template" project with 6 custom timelines. From that project I created multiple new projects - which they all have the 6 custom timelines. These projects are
all stored in the Project Center. The problem I am having is I don't understand how to select a specific timeline to show on the project specific SharePoint site. They all seem to be displaying 1 of the 6 timelines (in no particular order). I was thinking
maybe if I had edited a project and saved it while it was displaying a specific timeline it would display the last selected timeline on the SharePoint site, but it doesn't seem to be doing that.
Is there a way to select a specific timeline to display on the SharePoint site? Also, is there a way for a user to cycle through the numerous timeline view on the project specific SharePoint site?
I await your help!! :)Michelle_Sm --
I ran into this problem at the company where I used to work. One of our PMs had created multiple Timeline views, and wanted a specific custom Timeline view to show up in the Project Site for that project. I could not see any way to make that
happen. We had one of our SharePoint developers look into the issue, and he could not see any way to make this happen either. So, I am thinking this is not possible to do. But I would gladly welcome others in this forum to tell us the trick,
if there is one! :) Hope this helps.
Dale A. Howard [MVP] -
Using XSLT to extract value of a XML node with namespace
I have a XML source code here.
<?xml version="1.0" encoding="utf-8" ?>
<rss version="2.0" xmlns:job="http://www.pageuppeople.com">
<channel>
<title>SMH Jobs</title>
<link>internalrecruitment.smhgroup.com.au/jobsrss.ashx?stp=di</link>
<description>A listing of jobs available here</description>
<item>
<title>eCommerce Optimisation Advisor</title>
<description>A new and exciting opportunity exists for an experienced eCommerce Advisor to join</description>
<job:location PUReferenceID="3711">Sydney - Inner Suburbs & CBD</job:location>
</item>
</channel>
</rss>
I want to use XSLT to extract value of a XML node with namespace <job:location>, and the returned value should be string 'Sydney - Inner Suburbs & CBD'. I tried a few XSL code below, but failed with error or nothing was returned.
<xsl:value-of select="job:location" disable-output-escaping="yes"/>
<xsl:value-of select="job/location" disable-output-escaping="yes"/>
<xsl:value-of select="job\location" disable-output-escaping="yes"/>
<xsl:value-of select="location" disable-output-escaping="yes"/>
This might be an easy question for you, but I would appreciate if anyone can help.Hi Suncorp IT Learner,
We need to tell the XSLT that some elements are in another namespace. Copy the xmls declarations for the prefixes you need to use. Then use the xsl format as:
<xsl: value-of select=”job:location/@PUReferenceID”/>
In following issue, Chriztian has a good explanation:
http://our.umbraco.org/forum/developers/xslt/33353-XSLT-reading-XML-attribute-value
Thanks,
Qiao Wei
TechNet Community Support -
How can (parse) i use XML file with missing EndTag
hi,
i have an application which writes an "XML file".
another application should read that XML file, build an DOM and
access the nodes with xpath.
my problem. if the first application is not finished there are tags
missing. e.g. </xml>. but the seconds application cannot wait until the first application finishes it task.
if i now read the XML file the parser cannot load it because the end tags are missing.
my question:
how can i deactivate the check or how can i read the XML file and access it via XPath (my application is using at the moment XPath to access the nodes and i dont want to change that)
as parser i am using XERCES
alexAs far as I know, you can't do this - xml must be well formed (this is sort of a bedrock of xml). There may be some work around's, but I'm not aware of any - and they would most likely be hacks.
-
Hi How to generate vendor specific XML files
Hi all!
This is satish. I have aquestion as:
<b>How to generate vendor specific XML</b> files for deploying in Web Application server like weblogic9.0
Please help me!
Thanks in advance!!!Hi Satish
AFAIK there are nwds plugins where you can convert Weblogic / jboss specific were you can convert it in to SAP Web AS specific descriptor files .
you can find these here http://media.sdn.sap.com/html/submitted_docs/sap_j2ee_migration_kit_webpages/external_docs/SAP_J2EE_Migration_Plugin.zip
I am afraid there are no such plugins avaialble. You have to do the conversion of these vendor specific file manually or you will have to search for eclipse plugins which can do this
Hope this helps. please do not forget to reward points
regards
rajesh kr -
How to extract data from XML file with JavaScript
HI All
I am new to this group.
Can anybody help me regarding XML.
I want to know How to extract data from XML file with JavaScript.
And also how to use API for XML
regards
NagarajuThis is a Java forum.
JavaScript is something entirely different than Java, even though the names are similar.
Try another website with forums about JavaScript.
For example here: http://www.webdeveloper.com/forum/forumdisplay.php?s=&forumid=3 -
Hi,-
I am trying to parse an XML string with xpath as follows but I am getting null for getresult.
I am getting java.xml.xpath.xpathexpressionexception at line where
getresult = xpathexpression.evaluate(isource); is executed.
What should I do after
xpathexpression = xPath.compile("a/b");in the below snippet?
Thanks
String xmlstring ="..."; // a valid XML string;
Xpath xpath = XPathFactory.newInstance().newPath();
xpathexpression = xPath.compile("a/b");
// I guess the following line is not correct
InputSource isource = new inputSource(new ByteArrayInputStream(xmlstring.getBytes())); right
getresult = xpathexpression.evaluate(isource);My xml string is like:
<a>
<b>
<result> valid some more tags here
</result>
</b>
<c> 10
</c>
</a>Edited by: geoman on Dec 8, 2008 2:30 PMI've never used the version of evaluate that takes an InputSource. The difficulty with using it is that it does not save the DOM object. Each expression you evaluate will have to create the DOM object, use it once and then throw it away. I've yet to write a program that only needs one answer from an XML document. Usually, I use XPath to locate somewhere in a document and then read "nearby" content, add new content nearby, delete content, or move content. I'd suggest you may want to parse the XML stream and save the DOM Document.
Second, all of the XPath expressions search from a "context node". I have not had good luck searching from the Document object, so I always get the root element first. I think the expression should work if you use the root as the context node. You will need one of the versions of evaluate that uses an Object as the parameter. -
How to search for a text node with a particular value in an xml document with labview
supposing i have the following xml document:
<head>
<book>
<bookname>zio</bookname>
<author>dan</author>
</book>
<book>
<bookname>the spear warrior</bookname>
<author>britney</author>
</book>
<book>
<bookname>the beard</bookname>
<author>derrick</author>
</book>
</head>
i want to search for the author of the book "the beard" using for example the V.I Get first match of labview to access the the node with value "the beard" and then use Get next sibling V.I and Get node text content to get get the author of this book..so my question is how do i write the xpath expression for Get first match so as to access the node with bookname "the beard" instantyly? am trying to minimise the use of loops because they increase the time duration,..thank you (NB:i dont want to use Get all Matched V.I because it obliges me to use a loop in order to access the name derrick and this increases the time duration for my v.i)
Solved!
Go to Solution.Since it's all text, why not use a real quick Match Pattern (or Regular Expression, but you don't need that much power here), see attached.
Cameron
To err is human, but to really foul it up requires a computer.
The optimist believes we are in the best of all possible worlds - the pessimist fears this is true.
Profanity is the one language all programmers know best.
An expert is someone who has made all the possible mistakes.
To learn something about LabVIEW at no extra cost, work the online LabVIEW tutorial(s):
LabVIEW Unit 1 - Getting Started
Learn to Use LabVIEW with MyDAQ
Attachments:
Two-stage match demo.vi 8 KB -
How to select a specific column in a bean method?
Hey everyone,
I'm trying to select a specific column in my adf table so i can hightlight the ones i can after, with a method bean that does a match from another table. I'm using JDeveloper 12.1.2.0.0.
Here's my table at the moment (its a static list that Timo and Alejandro helped me create, thanks to them again!):
<af:table value="#{bindings.Anos1.collectionModel}" var="row"
rows="#{bindings.Anos1.rangeSize}"
emptyText="#{bindings.Anos1.viewable ? 'No data to display.' : 'Access Denied.'}"
rowBandingInterval="0" fetchSize="#{bindings.Anos1.rangeSize}"
filterModel="#{bindings.Anos1Query.queryDescriptor}"
queryListener="#{bindings.Anos1Query.processQuery}"
filterVisible="false" varStatus="vs" id="t5"
styleClass="AFStretchWidth" columnSelection="multiple"
inlineStyle="max-width:100%;" columnStretching="multiple"
columnSelectionListener="#{ControlBean.onAnoColumnSelect}"
disableColumnReordering="true"
binding="#{ControlBean.dimAnos}">
<af:column sortProperty="#{bindings.Anos1.hints.A2011.name}"
filterable="true" sortable="false"
headerText="2011"
id="c54" width="16%">
<af:outputText value="#{row.A2011}"
shortDesc="#{bindings.Anos1.hints.A2011.tooltip}"
id="ot54">
<af:convertNumber groupingUsed="false"
pattern="#{bindings.Anos1.hints.A2011.format}"/>
</af:outputText>
</af:column>
<af:column sortProperty="#{bindings.Anos1.hints.A2012.name}"
filterable="true" sortable="false"
headerText="2012"
id="c55" width="16%">
<af:outputText value="#{row.A2012}"
shortDesc="#{bindings.Anos1.hints.A2012.tooltip}"
id="ot55">
<af:convertNumber groupingUsed="false"
pattern="#{bindings.Anos1.hints.A2012.format}"/>
</af:outputText>
</af:column>
<af:column sortProperty="#{bindings.Anos1.hints.A2013.name}"
filterable="true" sortable="false"
headerText="2013"
id="c56" width="16%">
<af:outputText value="#{row.A2013}"
shortDesc="#{bindings.Anos1.hints.A2013.tooltip}"
id="ot56">
<af:convertNumber groupingUsed="false"
pattern="#{bindings.Anos1.hints.A2013.format}"/>
</af:outputText>
</af:column>
</af:table>
I've deleted some of the columns because they are all equal and by doing so, you have less problems in reading it.
In my method i have a matchEm but i'm trying to select a column by using this line:
dimAnos.setColumnSelection("A2012");
dimAnos is the binding for my table Anos (Years in Portuguese). I even tried another values fro the columnSelection but i couldn't make it selected. Am i doing anything wrong?
Please help me or give me an idea of how can i do this.
Regards,
Frederico.Hi Frederico,
The method setColumnSelection is meant to set whether your table supports column selection or not. It doesn't select the column. In order to select the column, you need to set the column attribute Selected to true. So I don't know if its an option for you but you can create a binding to all the columns you have in you bean, and then call the method A2012.setSelected(true), and then add a partial target to the table to re render it and show the selected column.
Hope this helps -
How to create a new tree node with the initial edit function
Hi all,
I would like to mimic the Windows system when the user creates a new node. The newly created node should be in the edit mode, i.e.it should
be highlighted and the cursor should be appear at the end of
the newly created node name.
I have the folloing code after I create the new node and set its selection:
TreePath selectionPath = getTree().getSelectionPath();
tree.startEditingAtPath(selectionPath);
However, this only partially does what I want, the cursor does not appear at the end of the node's name and I am not sure how to select the text name of the new node.
I hope someone can help.
KanitaI haven't tried myself but my guess is that you need to customize your tree cell editor for putting
cursor at specific position, etc. -
Add indent spaces to xml nodes with ms IXMLDOM
Hi All,
Currently I was update a xml file with IXMLDOM, after add nodes to xml file, we found the new added node was written in one line always. this make it hard to find the differences with merge tools.
and after we try to add text node to the xml to format it, it works unless we added nested nodes, it looks like:
<RootNode>
<ChildNodes>
<Child>value</Child></ChildNodes></RootNode>
Ugly, huh
And, when we set node's type with IXMLDOMNode::put_dataType it makes the node like:
<Name xmlns:dt="urn:schemas-microsoft-com:datatypes" dt:dt="string" Encoding="Standard" >Connections</Name>
but, the original nodes was:
<Name dt:dt="string" Encoding="Standard" xmlns:dt="urn:schemas-microsoft-com:datatypes">Connections</Name>
Also, it will not affect the its function, just cause extra efforts to merge the results.
So my questions:
1. is there any built-in functions that can be used to format the xml file to a indented version.
2. how to adjust the sequences of attributes of a node.
Thanks,
Levi
PS: currently, I was working on Windows CE 6.0, and these issues met on desktop OS too.
One world, one dream> 1. is there any built-in functions that can be used to format the xml file to a indented version.
I used to use this code in a previous version of a project. I don't
know if CE 6 will support it though.
static bool FormatDOMDocument( MSXML2::IXMLDOMDocument *pDoc )
// Create the writer
CComPtr <IMXWriter> pMXWriter;
if (FAILED (pMXWriter.CoCreateInstance(__uuidof (MXXMLWriter),
NULL, CLSCTX_ALL)))
return false;
CComPtr <ISAXContentHandler> pISAXContentHandler;
if (FAILED (pMXWriter.QueryInterface(&pISAXContentHandler)))
return false;
CComPtr <ISAXErrorHandler> pISAXErrorHandler;
if (FAILED (pMXWriter.QueryInterface (&pISAXErrorHandler)))
return false;
CComPtr <ISAXDTDHandler> pISAXDTDHandler;
if (FAILED (pMXWriter.QueryInterface (&pISAXDTDHandler)))
return false;
if (FAILED (pMXWriter->put_omitXMLDeclaration (VARIANT_FALSE))
||
FAILED (pMXWriter->put_standalone (VARIANT_TRUE)) ||
FAILED (pMXWriter->put_indent (VARIANT_TRUE)) ||
FAILED (pMXWriter->put_encoding (L"UTF-8")))
return false;
// Create the SAX reader
CComPtr <ISAXXMLReader> pSAXReader;
if (FAILED(pSAXReader.CoCreateInstance(__uuidof
(SAXXMLReader), NULL, CLSCTX_ALL)))
return false;
if (FAILED(pSAXReader->putContentHandler
(pISAXContentHandler)) ||
FAILED(pSAXReader->putDTDHandler (pISAXDTDHandler)) ||
FAILED(pSAXReader->putErrorHandler
(pISAXErrorHandler)) ||
FAILED(pSAXReader->putProperty(
reinterpret_cast<unsigned short*>(
L"http://xml.org/sax/properties/lexical-handler" ), CComVariant
(pMXWriter))) ||
FAILED(pSAXReader->putProperty(
reinterpret_cast<unsigned short*>(
L"http://xml.org/sax/properties/declaration-handler" ), CComVariant
(pMXWriter))))
return false;
// Perform the write
bool success1 = SUCCEEDED( pMXWriter->put_output(
CComVariant(pDoc ) ) );
bool success2 = SUCCEEDED( pSAXReader->parse( CComVariant(
pDoc ) ) );
return success1 && success2;
Dave -
That specific XML node...
Hi
I have an ID document (CS3 - MAC - JavaScript) with a complex XML structure (about 700 nodes...).
I need to get the attributes of a specific node without making FOR statements because it takes a long time.
Basically every node in the XML structure has 5 attributes.
One of those is the ID.
Is it possible to get the node knowing the ID value?
Thanks anticipately.> Is it possible to get the node knowing the ID value?
Take a look at the XML.xpath() method. That's it's purpose. The version in
Adobe's interpreters will choke on more complicated expressions, but looking for
nodes with a particular attributes should be something it can handle. -
How can I save a XML file with JAXP1.1?
Dear All.
I write a program to create XML file with DOM model, but I can't know how to save it? My environment is JAXP1.1 and JDK1.3.1,I has been required not use other XML parser toolkits,only JAXP1.1.
How can I do? thank you.
Many person give me a idea the com.sun.xml.tree.XmlDocument, but I can't find the class in API document or JAXP1.1's packages. why?
what is it? How can i use it?
thank you very much.The way to save an XML Document is using a Transformer.
To have access to a transformer use the packages :
import javax.xml.transform.*;
import javax.xml.transform.dom.*;
import javax.xml.transform.stream.*;
Then for saving your Document Object (named dXml) get a Transformer Object with the TransformerFactory Object :
TransformerFactory tf = TransformerFactory.newInstance();
Transformer t = tf.newTransformer();
Now you have got your Transformer Object, to save your Document Object use the method :
Document dXml = getMyDocument(); // this is your Document Object.
OutputStream osSave = getMySaveStream(); // this the OutputStream you need to save your Document.
try
t.transform(new DomSource(dXml), new StreamResult(new OutputStreamWriter(osSave)));
finally
osSave.close();
And your Document was now saved.
Maybe you are looking for
-
My apple id and icloud account merge together, i want to delete my icloud account because of some problems on name so i want to change name or delete my icloud account . <Subject Edited by Host>
-
How to set SOAP Header When Calling Business Service (OSB) Using Split-Join
Hi, We need to call WSDL based webservice which requires heading static content for successful call. As we need to call the same service parallely, hence we want to use Split-Join. Looked at couple of forum links, noted that we can't play with header
-
Can I create subforms dynamically?
Hello, I need to develop a interactive form, wherein user enters the data, its as below, As we saw the requirement is as below, 1) Place a push button on the form, here its just simple a + symbol 2) When user clicks it as a 1st time, a new subform /
-
Anyone have a fix for Unknown Error (-9812)?
Whenever I try to log on to my iTunes account, I keep getting the following message: "We could not complete your iTunes store request. An unknown error occurred (-9812). There was an error in the iTunes store. Please try again later." I've tried shut
-
Hi, I keep getting an error 1310 when adobe is updating to a new version. Thx Ron