from MATLAB command line , when I type my variable a , it gives me values as expected :
a =
value_1
value_2
and I would like to access to each value of a, I tried a(1) but this gives me empty the type of a is 1x49char. how could I get value_1 and value_2 ?
whos('a')
Name Size Bytes Class Attributes
a 1x49 98 char
I get the a from xml file :
<flag ="value">
<flow>toto</flow>
<flow>titi</flow>
</flag>
a+0:
ans =
10 32 32 32 32 32 32 32 32 32 32 32 32 98,...
111 111 108 101 97 110 95 84 10 32 32 32 32 32,...
32 32 32 32 32 32 32 66 79 79 76 10 32 32,...
32 32 32 32 32 32 32
You seem to have an somewhat inconvenient character array. You can convert this array in a more manageable form by doing something like what @Richante said:
Then you can reference to
toto
andtiti
byNote that
strings{1}
is empty, sincea
starts with a newline character. Note also that you don't need astrtrim
-- that is taken care of bystrread
already. You can circumvent the initial newlines by doingbut I'd only do that if the first newline is consistently there for all cases. I'd much rather do
Finally, if you'd rather use
textscan
instead ofstrread
, you need to do 1 extra step:Perhaps
a
is a string with a newline in it. To make two separate variables, try:strread
will split a into separate lines, andstrtrim
will remove leading/trailing whitespace. Then you can access the lines using(note that you must use curly brackets since this is a cell array of strings).
How are you reading in the xml file? If you're using xmlread then MatLab adds a lot of white space in there for you and could be the cause of your problems.
http://www.mathworks.com/matlabcentral/fileexchange/28518-xml2struct
This will put your xml file into a struct where you should be able to access the elements in the array.