Exit
  • Global community
    • Language:
      • Deutsch
      • English
      • Español
      • Français
      • Português
  • 日本語コミュニティ
  • 한국 커뮤니티
0

Can't access xml tags directly:: Namespace issue

New Here ,
Sep 18, 2012 Sep 18, 2012

It appears that I've found another case of "Flash does (this) great. EXCEPT . . . . . "

I've posted my issue on a couple forums with no replies. Rather than repost I'll just put the link here and hope SOMEBODY has an answer.

http://www.actionscript.org/forums/showthread.php3?p=1137057#post1137057



TOPICS
ActionScript
2.9K
Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines

correct answers 1 Correct answer

Community Expert , Sep 18, 2012 Sep 18, 2012

oops, you're correct.

i fixed that in message 1 so, you can mark that as correct if you found it helpful.

there are 2 ways a namespace can be used in xml.  the way you are using it, the namespace applies to each and every node within the xml.

to reference each of every node (but not attribute) you must use the namespace string:

trace(xml.s::responseDeclaration.s::mapping.s::mapEntry.@mapKey);

trace(xml.s::responseDeclaration.s::mapping.s::mapEntry.(@mapKey=="A").@mappedValue);

Translate
Community Expert ,
Sep 18, 2012 Sep 18, 2012

you need to use that namespace to reference xml elements.  try:

var s:Namespace=xml.namespace();

trace(xml.s::responseDeclaration);

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
New Here ,
Sep 18, 2012 Sep 18, 2012

doesn't work.

the xml is from DITA markup. I know nothing about it. It was given to me with instructions.

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
New Here ,
Sep 18, 2012 Sep 18, 2012

putting your code in throws an error:


1046: Type was not found or was not a compile-time constant: NameSpace.
Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Expert ,
Sep 18, 2012 Sep 18, 2012

what are your publish settings?

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
New Here ,
Sep 18, 2012 Sep 18, 2012

I'm publishing for 3.0 out of CS5

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
New Here ,
Sep 18, 2012 Sep 18, 2012

Namespace requires a small s.

I can now trace responseDeclaration. How do I access its children? How does that code even work for that matter?

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Expert ,
Sep 18, 2012 Sep 18, 2012

oops, you're correct.

i fixed that in message 1 so, you can mark that as correct if you found it helpful.

there are 2 ways a namespace can be used in xml.  the way you are using it, the namespace applies to each and every node within the xml.

to reference each of every node (but not attribute) you must use the namespace string:

trace(xml.s::responseDeclaration.s::mapping.s::mapEntry.@mapKey);

trace(xml.s::responseDeclaration.s::mapping.s::mapEntry.(@mapKey=="A").@mappedValue);

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
New Here ,
Sep 18, 2012 Sep 18, 2012

Hallalejah.

Thank you very much!

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Expert ,
Sep 18, 2012 Sep 18, 2012

you're welcome.

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
New Here ,
Sep 19, 2012 Sep 19, 2012

One last question: Would it be possible to traverse the xml tags using tagnames stored in variables?

The only problem I see with this method is that it's very "static" to type in

xml.s::responseDeclaration.s::correctResponse.s::value

is there a way to say:

var correctAnswer = "responseDeclaration.s::correctResponse.s::value"

to then get

xml.s::child(correctAnswer);

That way dealing with changing xml structures could be handled in the variables section of my code.

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Expert ,
Sep 19, 2012 Sep 19, 2012

i'm not sure what you're asking.  but if you are asking for a short cut to traverse your xml, you can use the double dot:

trace(xml..s::simpleChoice);

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
New Here ,
Sep 19, 2012 Sep 19, 2012

While that's helpful, I'm looking for a way to store "simpleChoice" as a string to reference somehow.

as in

xml.s::(string for simpleChoice)

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Expert ,
Sep 19, 2012 Sep 19, 2012

use array notation:

var itemS:String="simpleChoice";

.

.

.

var simpleChoiceList:XMLList = xml..s::[itemS];

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
New Here ,
Sep 19, 2012 Sep 19, 2012

kglad, you're the man. Over the past 3 years I've posted probably a half dozen problems on various sights, and you are officially the first one to answer any of them with a solution. (well maybe 2nd, but still)

I tip my hat to you. Thanks!

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Expert ,
Sep 19, 2012 Sep 19, 2012
LATEST

you're welcome!

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
New Here ,
Sep 18, 2012 Sep 18, 2012

Can you please explain to me why this works with your code? Everything I've found on the subject doesn't reference a double colon anywhere.
How would I access child nodes of responseDeclaration?

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines