我有一个 XML 文档,它表示 LabVIEW 中存储模拟参数的数据结构(一个簇的数组)。我通过将我的数据结构从 LabVIEW 保存为 XML 来生成文档,我需要保留它的通用格式,以便 LabVIEW 可以在以后读回它。文档结构如下:
<Array>
<Cluster>
<Name>Meaningful Name 1</Name>
<Cluster> <!-- note clusters within clusters -->
<Name>Component 1 params</Name>
<!-- Parameter values here -->
</Cluster>
<Cluster>
<Name>Component 2 params</Name>
<!-- Parameter values here -->
</Cluster>
</Cluster>
<!-- More clusters of clusters -->
</Array>
每个父 Cluster 将具有完全相同的子元素(组件 1 参数、组件 2 参数等),只有它们的 Value 字段(未显示)将是不同的。每个父 Cluster 也将有一个唯一的名称。我无法更改用于指定父/子集群的标签,因为那样 LabVIEW 将不会读取文件。
我正在开发一个 Java 应用程序,允许用户在不破坏其格式的情况下编辑存储在文档中的参数数据(以便 LabVIEW 仍然可以读取它)。我希望用户能够通过其 Name 字段选择父集群之一,然后使用其中存储的数据填充表单,以便可以编辑此数据。我的问题是使用 DocumentBuilder和 Document类,我似乎不能只拆分父 Cluster 节点。
从 parsing XML with NodeList and DocumentBuilder 的答案开始工作:
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document doc = builder.parse("param_file.xml");
NodeList nodes = doc.getElementsByTagName("Cluster"); // every Cluster is in this list, but I only want to iterate over the top-level clusters.
for (int i = 0; i < nodes.getLength(); ++i)
{
Element node = (Element) nodes.item(i);
// Display the cluster names for the user to select one...
}
我想我正在寻找一种方法来将我的 XML 文件表示为维护树结构的对象,然后生成仅包含顶级 Cluster 元素的列表,然后每个元素都可以是钻取以获取/设置它们的子 Cluster 元素及其属性。
谢谢!
最佳答案
Document 实例已经代表了内存中 XML 的树结构。您必须在这个结构中正确导航。如果您想要顶级 Cluster 元素,您可以获取 XML 根的子节点并循环遍历它们:
List<Node> topLevelClusterElements = new ArrayList<Node>();
NodeList childNodes = doc.getDocumentElement().getChildNodes();
for(int i = 0; i < childNodes.getLength(); i++) {
Node childNode = childNodes.item(i);
if(childNode.getNodeType() == Node.ELEMENT_NODE && childNode.getNodeName().equals("Cluster")) {
Element clusterElement = (Element) childNode;
topLevelClusterElements.add(clusterElement);
}
}
关于Java XML : parsing nested XML file with identical tags,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31272829/
我想设置一个默认日期,例如实际日期,我该如何设置?还有如何在组合框中设置默认值顺便问一下,date_field_tag和date_field之间有什么区别? 最佳答案 试试这个:将默认日期作为第二个参数传递。youcorrectlysetthedefaultvalueofcomboboxasshowninyourquestion. 关于ruby-on-rails-date_field_tag,如何设置默认日期?[rails上的ruby],我们在StackOverflow上找到一个类似的问
在HTML中我会写:但我必须针对rubyonrails对其进行调整,而且我对它还很陌生...所以我尝试了:rel="lightbox"title="mycaption">...但它不起作用,因为“rel="lightbox"title="mycaption">”部分未应用但出现在html部分上+我看到了2个图像,而我应该只看到“imagethumb”。我也试过:"lightbox",:title=>"mycaption")%>我也看到了这两张图...我应该怎么做才能获得与我编写的HTML代码等效的内容? 最佳答案 试试这个"")
如果params[:date]的参数为空,我希望我的text_field_tag将当前日期作为默认值,这是我目前的代码:我想要类似:谢谢 最佳答案 您可以简单地使用“或”运算符。如果params[:end]为空,它将使用Time.now。 关于ruby-on-rails-如果参数为空,则Text_field_tag默认值?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/35520
我有这个可以为我生成一个超链接:我希望它显示在td标签中,所以我想使用这个content_tag来帮助我:"example")%>我想要我的td中的超链接,所以我有这样的东西:,:class=>"example")%>但是我收到语法错误,我该怎么办? 最佳答案 内联:'example')%>或block形式:'example')do%> 关于ruby-on-rails-如何在RoR中使用content_tag嵌入标签?,我们在StackOverflow上找到一个类似的问题:
我的布局中有stylesheet_link_tag(:all)。即使在生产环境中运行它(railss-eproduction),它在本地机器上的表现也如预期。我所说的预期是指它发出所有指向现有样式表的链接,而不将它们连接到all.css中,并且它不发出指向all的链接。CSS.但是当我将它部署到Heroku时,结果是一样的,并且在开头添加了一个指向all.css的链接。这是我不想要也不期望的,尤其是当本地机器上的生产环境不发出它时。所以问题是如何在不手动指定所有文件的情况下摆脱Heroku上的all.css链接?谢谢。 最佳答案 H
我有一个连接表create_table"combine_tags",force:truedo|t|t.integer"user_id"t.integer"habit_id"t.integer"valuation_id"t.integer"goal_id"t.integer"quantified_id"end其目的是让tag_cloud为多个模型工作。我把它放在application_controllerdeftag_cloud@tags=CombineTag.tag_counts_on(:tags)end我的tag_cloud看起来像这样:css_class%>#orthisdepen
使这个实际异步发布的正确咒语是什么?form_tag:controller=>:magic,:action=>:search,:method=>post,:remote=>truedomethod=post和remote=true只是在url的末尾被压扁,而不是真正使它成为一个ajaxpost。 最佳答案 我发现唯一的方法是将url参数包装在url_for方法中。form_tagurl_for(:action=>:create,:id=>@artist.id),:remote=>truedo但是,如果您需要传递method参数,您可
我的HAML模板的这个助手有什么问题?defdisplay_event(event)event=MultiJson.decode(event)markup_class=get_markup_class(event)haml_tag:li,:class=>markup_classdohaml_tag:b,"Foo"haml_tag:i,"Bar"endend这是错误:haml_tagoutputsdirectlytotheHamltemplate.Disregarditsreturnvalueandusethe-operator,orusecapture_hamltogetthevalu
我已经按照RubyScreencast指南从Rails3.2升级到Rails4。我的测试正在运行并且服务器已启动,但我在发送请求时收到错误消息:ERRORNoMethodError:undefinedmethod`tagged'for#/home/mahoni/.rvm/gems/ruby-2.0.0-p195/gems/activesupport-4.0.0/lib/active_support/tagged_logging.rb:67:in`tagged'/home/mahoni/.rvm/gems/ruby-2.0.0-p195/gems/railties-4.0.0/lib/r
抱歉,我是Ruby的新手,但我正在尝试向我的模板添加一个liquid标签,我可以循环显示五个最流行标签的列表。出于某种原因,这个插件在我使用时只输出一个标签。这是我在mu插件中的内容:moduleJekyllclassPopularTags这是我在模板中输入的内容:{%popular_tags%} 最佳答案 也可以在没有插件的情况下执行此操作,这意味着它可以在GitHubPages上运行.我已经在myblog上做类似的事情(也没有插件),我在这里显示了一个标签列表,其中包含帖子数,按字母顺序排序。Thesourcecodeisher