Iter through XML tags and get tag inside that attribute - Python
up vote
0
down vote
favorite
I'm looking for child tag values in xml data, my code below gets me all the values for tags "color" inside "info" in xml data, but I'm looking for a iteration,
if color = yellow, i need to get it's rank only.
****My Code:****
xmldata = '''
<FullGroup>
<color>General</color>
<link>url</link>
<three>test</three>
<four>
<info>
<color>yellow</color>
<rank>100</rank>
<place>first</place>
</info>
<info>
<color>red</color>
<rank>500</rank>
<place>second</place>
</info>
</four>
</FullGroup>'''
xml = ElementTree.fromstring(xmldata)
for color in xml.findall('.//info/color'):
print color.text
output:
yellow
red
Required output:
100
Thanks in Advance ..
python xml
add a comment |
up vote
0
down vote
favorite
I'm looking for child tag values in xml data, my code below gets me all the values for tags "color" inside "info" in xml data, but I'm looking for a iteration,
if color = yellow, i need to get it's rank only.
****My Code:****
xmldata = '''
<FullGroup>
<color>General</color>
<link>url</link>
<three>test</three>
<four>
<info>
<color>yellow</color>
<rank>100</rank>
<place>first</place>
</info>
<info>
<color>red</color>
<rank>500</rank>
<place>second</place>
</info>
</four>
</FullGroup>'''
xml = ElementTree.fromstring(xmldata)
for color in xml.findall('.//info/color'):
print color.text
output:
yellow
red
Required output:
100
Thanks in Advance ..
python xml
add a comment |
up vote
0
down vote
favorite
up vote
0
down vote
favorite
I'm looking for child tag values in xml data, my code below gets me all the values for tags "color" inside "info" in xml data, but I'm looking for a iteration,
if color = yellow, i need to get it's rank only.
****My Code:****
xmldata = '''
<FullGroup>
<color>General</color>
<link>url</link>
<three>test</three>
<four>
<info>
<color>yellow</color>
<rank>100</rank>
<place>first</place>
</info>
<info>
<color>red</color>
<rank>500</rank>
<place>second</place>
</info>
</four>
</FullGroup>'''
xml = ElementTree.fromstring(xmldata)
for color in xml.findall('.//info/color'):
print color.text
output:
yellow
red
Required output:
100
Thanks in Advance ..
python xml
I'm looking for child tag values in xml data, my code below gets me all the values for tags "color" inside "info" in xml data, but I'm looking for a iteration,
if color = yellow, i need to get it's rank only.
****My Code:****
xmldata = '''
<FullGroup>
<color>General</color>
<link>url</link>
<three>test</three>
<four>
<info>
<color>yellow</color>
<rank>100</rank>
<place>first</place>
</info>
<info>
<color>red</color>
<rank>500</rank>
<place>second</place>
</info>
</four>
</FullGroup>'''
xml = ElementTree.fromstring(xmldata)
for color in xml.findall('.//info/color'):
print color.text
output:
yellow
red
Required output:
100
Thanks in Advance ..
python xml
python xml
asked Nov 19 at 22:39
Sai Kiran
104
104
add a comment |
add a comment |
2 Answers
2
active
oldest
votes
up vote
1
down vote
You could use zip()
like so:
for color, rank in zip(xml.findall('.//info/color'), xml.findall('.//info/rank')):
if color.text == 'yellow':
print(rank.text)
AttributeError: 'str' object has no attribute 'findall'.... Error, is it reading xml data as string ?
– Sai Kiran
Nov 20 at 16:44
add a comment |
up vote
1
down vote
Your XPath expression is wrong. To get the rank
children of all info
elements which have a child named color
with the text()
value "yellow", change
xml = ElementTree.fromstring(xmldata)
for color in xml.findall('.//info/color'):
print color.text
to
xml = ElementTree.fromstring(xmldata)
for curRank in xml.findall('.//info[color="yellow"]/rank'):
print curRank.text
Output is:
100
Thanks, working !!
– Sai Kiran
Nov 20 at 17:00
Thank you !! Done
– Sai Kiran
Nov 21 at 16:58
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53383677%2fiter-through-xml-tags-and-get-tag-inside-that-attribute-python%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
2 Answers
2
active
oldest
votes
2 Answers
2
active
oldest
votes
active
oldest
votes
active
oldest
votes
up vote
1
down vote
You could use zip()
like so:
for color, rank in zip(xml.findall('.//info/color'), xml.findall('.//info/rank')):
if color.text == 'yellow':
print(rank.text)
AttributeError: 'str' object has no attribute 'findall'.... Error, is it reading xml data as string ?
– Sai Kiran
Nov 20 at 16:44
add a comment |
up vote
1
down vote
You could use zip()
like so:
for color, rank in zip(xml.findall('.//info/color'), xml.findall('.//info/rank')):
if color.text == 'yellow':
print(rank.text)
AttributeError: 'str' object has no attribute 'findall'.... Error, is it reading xml data as string ?
– Sai Kiran
Nov 20 at 16:44
add a comment |
up vote
1
down vote
up vote
1
down vote
You could use zip()
like so:
for color, rank in zip(xml.findall('.//info/color'), xml.findall('.//info/rank')):
if color.text == 'yellow':
print(rank.text)
You could use zip()
like so:
for color, rank in zip(xml.findall('.//info/color'), xml.findall('.//info/rank')):
if color.text == 'yellow':
print(rank.text)
answered Nov 19 at 23:20
Red Cricket
4,20983382
4,20983382
AttributeError: 'str' object has no attribute 'findall'.... Error, is it reading xml data as string ?
– Sai Kiran
Nov 20 at 16:44
add a comment |
AttributeError: 'str' object has no attribute 'findall'.... Error, is it reading xml data as string ?
– Sai Kiran
Nov 20 at 16:44
AttributeError: 'str' object has no attribute 'findall'.... Error, is it reading xml data as string ?
– Sai Kiran
Nov 20 at 16:44
AttributeError: 'str' object has no attribute 'findall'.... Error, is it reading xml data as string ?
– Sai Kiran
Nov 20 at 16:44
add a comment |
up vote
1
down vote
Your XPath expression is wrong. To get the rank
children of all info
elements which have a child named color
with the text()
value "yellow", change
xml = ElementTree.fromstring(xmldata)
for color in xml.findall('.//info/color'):
print color.text
to
xml = ElementTree.fromstring(xmldata)
for curRank in xml.findall('.//info[color="yellow"]/rank'):
print curRank.text
Output is:
100
Thanks, working !!
– Sai Kiran
Nov 20 at 17:00
Thank you !! Done
– Sai Kiran
Nov 21 at 16:58
add a comment |
up vote
1
down vote
Your XPath expression is wrong. To get the rank
children of all info
elements which have a child named color
with the text()
value "yellow", change
xml = ElementTree.fromstring(xmldata)
for color in xml.findall('.//info/color'):
print color.text
to
xml = ElementTree.fromstring(xmldata)
for curRank in xml.findall('.//info[color="yellow"]/rank'):
print curRank.text
Output is:
100
Thanks, working !!
– Sai Kiran
Nov 20 at 17:00
Thank you !! Done
– Sai Kiran
Nov 21 at 16:58
add a comment |
up vote
1
down vote
up vote
1
down vote
Your XPath expression is wrong. To get the rank
children of all info
elements which have a child named color
with the text()
value "yellow", change
xml = ElementTree.fromstring(xmldata)
for color in xml.findall('.//info/color'):
print color.text
to
xml = ElementTree.fromstring(xmldata)
for curRank in xml.findall('.//info[color="yellow"]/rank'):
print curRank.text
Output is:
100
Your XPath expression is wrong. To get the rank
children of all info
elements which have a child named color
with the text()
value "yellow", change
xml = ElementTree.fromstring(xmldata)
for color in xml.findall('.//info/color'):
print color.text
to
xml = ElementTree.fromstring(xmldata)
for curRank in xml.findall('.//info[color="yellow"]/rank'):
print curRank.text
Output is:
100
answered Nov 20 at 0:00
zx485
13.1k122845
13.1k122845
Thanks, working !!
– Sai Kiran
Nov 20 at 17:00
Thank you !! Done
– Sai Kiran
Nov 21 at 16:58
add a comment |
Thanks, working !!
– Sai Kiran
Nov 20 at 17:00
Thank you !! Done
– Sai Kiran
Nov 21 at 16:58
Thanks, working !!
– Sai Kiran
Nov 20 at 17:00
Thanks, working !!
– Sai Kiran
Nov 20 at 17:00
Thank you !! Done
– Sai Kiran
Nov 21 at 16:58
Thank you !! Done
– Sai Kiran
Nov 21 at 16:58
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53383677%2fiter-through-xml-tags-and-get-tag-inside-that-attribute-python%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown