我可以使用一些帮助来了解为什么我无法获取此图形生成器中第一个面板的标题

使用此代码
report=current report();
test=(report<< XPath("(//OutlineBox[text()='Graph Builder']//GraphBuilderGroupBox)[2]"))<<GET title=""></GET>Thanks for any suggestions!
Steve
啊,有趣。我从来没有注意到——或者关心过:
使用一些 Xpath 解析器,人们已经可以获取节点的内容
https://www.w3schools.com/xml/xpath_examples.asp
http://xpather.com/
例如粘贴结果后
xml= current report() << Get XML;
进入http://xpather.com/并搜索
(//OutlineBox[text()='Graph Builder']//GraphBuilderGroupBox)[2]
得到的结果为:“年龄=13”

JMP 和其他
https://www.freeformatter.com/xpath-tester.html
https://magictool.ai/tool/xpath-tester/de/
http://xpather.com/ (设置:节点)
返回周围的“对象”。
因此,必须在单独的步骤中检索节点的内容...
我想还有比这个更简单的方法......
在有人发布之前,你可以使用
report=current report();
test=(report<< XPath("(//OutlineBox[text()='Graph Builder']//GraphBuilderGroupBox)[2]"))[1];
xml= test << Get XML;
Regex (xml, ">(.*?)<\/GraphBuilderGroupBox>", "\1")
顺便说一句 - 谢谢你的提示:
在 XPath 中可以通过 [2] 直接进行索引 - 太棒了,谢谢!!!

如果你检查单个 GraphBuilderGroupBox 的 XML,你会发现你正在寻找 XML 中的值
"<GRAPHBUILDERGROUPBOX width="\!" 570="">age = 12</GRAPHBUILDERGROUPBOX>"
您可以使用 XPath 获取该值
gbb_texts = (Report(gb) << XPath("(//GraphBuilderGroupBox/text())"));<BR />// {"age = 12", "age = 13", "age = 14", "age = 15", "age = 16", "age = 17"}
如果您只想获取第一个,您可以限制 XPath 中已有的索引(就像您所做的那样),然后从中获取第一个索引,因为 << XPath 将返回一个列表(在这种情况下我很可能会跳过 XPath 索引,因为您仍然必须使用 JMP 的索引)
gbb_text = (Report(gb) << XPath("((//GraphBuilderGroupBox/text()))[1]"))[1];<BR />// or gbb_text = (Report(gb) << XPath("(//GraphBuilderGroupBox)[1]/text()"))[1];
仅使用 JMP 索引
gbb_text= (Report(gb) << XPath("//GraphBuilderGroupBox/text()"))[1];
Names Default To Here(1);
dt = open("$SAMPLE_DATA/Big Class.jmp");
gb = dt << Graph Builder(
Show Control Panel(0),
Variables(X(:weight), Y(:height), Page(:age), Overlay(:sex)),
Elements(Points(X, Y, Legend(9)), Line Of Fit(X, Y, Legend(11)))
);
group_texts = (Report(gb) << XPath("//GraphBuilderGroupBox/text()"));
// {"age = 12", "age = 13", "age = 14", "age = 15", "age = 16", "age = 17"}
呜呜!
谢谢@hogi和@jthi !像往常一样,快速而出色的帮助。
提出这个问题的原因是我需要为不同的面板设置不同的轴,但由于面板数量会改变 Graph Builder 保存的脚本(例如 Scalebox(2))中轴范围的硬编码,导致图表在以后运行时变得一团糟。所以我现在可以使用此代码循环遍历面板,检查其中的内容,然后正确设置轴的最小值和最大值。仍然有很多痛苦的编码工作要做,但至少现在我有了一条路!
史蒂夫