Substring between XML


 
Thread Tools Search this Thread
Top Forums Programming Substring between XML
# 1  
Old 04-20-2011
Substring between XML

Hey Everyone,

Does anyone know if its possible to perform a substr on a value between an xml node

i.e.

<field="tmp">replace me</field>

I need to be able replace the value inside the tag element with a char *

thanks,

Rob.
# 2  
Old 04-20-2011
I take it you're programming in C?

Of course it's possible, but C isn't exactly a string language, it doesn't have the operators or memory management to make that easy. You can't assume there's enough memory in your array to hold the string you want to put there for instance, and can't assume that the array was even allocated in the first place(what if it's an array on the stack).

What does your input look like? Just the single line like that, or does it have to hunt through a big mess of tags by itself too? And what's it being held in?
# 3  
Old 04-20-2011
Im looping through an xml file and using fgets on the line storing it in a char *thisline[1024]. There will only ever be one tag on each line.
# 4  
Old 04-20-2011
It being its own line makes it a lot easier.
Code:
char buf[1024];
char *token="<field=\"tmp\">", *match;

strcpy(buf, "<field=\"tmp\">replace me</field>");

// Gives us NULL if no match, or the position of the first match
match=strstr(buf, token);
if(match)
{
        // Move past the token
        match+=strlen(token);
        // Overwrite EVERYTHING after the token
        sprintf(match, "%s</field>\n", "replacement value");
}


Last edited by Corona688; 04-20-2011 at 06:03 PM..
This User Gave Thanks to Corona688 For This Post:
# 5  
Old 04-21-2011
Hey Corona688, thanks for you help.

So i now have:-

Code:
//Global Declarations
char sSearchString[1024] = {0,};
char *result;


Code:
FILE *istream;
while(!feof(istream)) //main loop
{
	char this_line[256];
	fgets (this_line, sizeof(this_line), istream);
	sprintf(sSearchString, "<field name=\"tmp\">");

	result=strstr(this_line, sSearchString);
	if(result) //we are in the media table
	{
		result+=strlen(sSearchString);
		sprintf(result, "%s</field>\n", newtmp);
		sprintf(this_line, "%s", result);
	}

	//print to new file
	FILE *fout = fopen("new.xml","a");
	if(fout == NULL)
	{
		fclose(fout);
		return false;
	}
	fprintf(fout,"%s",this_line);
	fclose(fout);
}

I am no longer seeing <field name="tmp"> in my string that i replace. Im only seeing "newvalue</field>".

Thanks again,

Rob.
# 6  
Old 04-21-2011
I posted bs here, please delete ^^
# 7  
Old 04-21-2011
Why did you do this?
Code:
sprintf(this_line, "%s", result);

That undoes the work of the previous line. Take it out.

Regards,
Mark.
Login or Register to Ask a Question

Previous Thread | Next Thread

9 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

How to pull multiple XML tags from the same XML file in Shell.?

I'm searching for the names of a TV show in the XML file I've attached at the end of this post. What I'm trying to do now is pull out/list the data from each of the <SeriesName> tags throughout the document. Currently, I'm only able to get data the first instance of that XML field using the... (9 Replies)
Discussion started by: hungryd
9 Replies

2. UNIX for Beginners Questions & Answers

Grepping multiple XML tag results from XML file.

I want to write a one line script that outputs the result of multiple xml tags from a XML file. For example I have a XML file which has below XML tags in the file: <EMAIL>***</EMAIL> <CUSTOMER_ID>****</CUSTOMER_ID> <BRANDID>***</BRANDID> Now I want to grep the values of all these specified... (1 Reply)
Discussion started by: shubh752
1 Replies

3. Shell Programming and Scripting

Splitting a single xml file into multiple xml files

Hi, I'm having a xml file with multiple xml header. so i want to split the file into multiple files. Sample.xml consists multiple headers so how can we split these multiple headers into multiple files in unix. eg : <?xml version="1.0" encoding="UTF-8"?> <ml:individual... (3 Replies)
Discussion started by: Narendra921631
3 Replies

4. Shell Programming and Scripting

Split xml file into multiple xml based on letterID

Hi All, We need to split a large xml into multiple valid xml with same header(2lines) and footer(last line) for N number of letterId. In the example below we have first 2 lines as header and last line as footer.(They need to be in each split xml file) Header: <?xml version="1.0"... (5 Replies)
Discussion started by: vx04
5 Replies

5. Shell Programming and Scripting

How to add Xml tags to an existing xml using shell or awk?

Hi , I have a below xml: <ns:Body> <ns:result> <Date Month="June" Day="Monday:/> </ns:result> </ns:Body> i have a lookup abc.txtt text file with below details Month June July August Day Monday Tuesday Wednesday I need a output xml with below tags <ns:Body> <ns:result>... (2 Replies)
Discussion started by: Nevergivup
2 Replies

6. Shell Programming and Scripting

Shell Command to compare two xml lines while ignoring xml tags

I've got two different files and want to compare them. File 1 : HTML Code: <response ticketId="944" type="getQueryResults"><status>COMPLETE</status><description>Query results fetched successfully</description><recordSet totalCount="1" type="sms_records"><record... (1 Reply)
Discussion started by: Shaishav Shah
1 Replies

7. Shell Programming and Scripting

How to add the multiple lines of xml tags before a particular xml tag in a file

Hi All, I'm stuck with adding multiple lines(irrespective of line number) to a file before a particular xml tag. Please help me. <A>testing_Location</A> <value>LA</value> <zone>US</zone> <B>Region</B> <value>Russia</value> <zone>Washington</zone> <C>Country</C>... (0 Replies)
Discussion started by: mjavalkar
0 Replies

8. Shell Programming and Scripting

How to remove xml namespace from xml file using shell script?

I have an xml file: <AutoData xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <Table1> <Data1 10 </Data1> <Data2 20 </Data2> <Data3 40 </Data3> <Table1> </AutoData> and I have to remove the portion xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" only. I tried using sed... (10 Replies)
Discussion started by: Gary1978
10 Replies

9. Shell Programming and Scripting

How to parse a XML file using PERL and XML::DOm

I need to know the way. I have got parsing down some nodes. But I was unable to get the child node perfectly. If you have code please send it. It will be very useful for me. (0 Replies)
Discussion started by: girigopal
0 Replies
Login or Register to Ask a Question