您是否知道JAXB设置可以防止在生成的XML中生成standalone ="yes"?
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
Run Code Online (Sandbox Code Playgroud) 我希望我的Java类的序列化XML输出能够满足Java类中属性的顺序.
似乎JAXB按字母顺序排序.
我可以通过重写此@XmlType与propOrder并指定所有属性,但我有很多属性的类,这些都还没有最终确定.
我读到指定一个空的propOrder会这样做,但事实并非如此.
我的示例类:
package test;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;
@XmlRootElement
//@XmlType(propOrder={"company", "scheme", "agreementNumber"})
@XmlType(propOrder={}) // makes no difference - still alphabetical in XML
public class CustomerPlan2 {
private String company;
private String scheme;
private String agreementNumber;
@XmlElement(name="Company")
public String getCompany() {
return company;
}
public void setCompany(String company) {
this.company = company;
}
@XmlElement(name="Scheme")
public String getScheme() {
return scheme;
}
public void setScheme(String scheme) {
this.scheme = scheme;
} …Run Code Online (Sandbox Code Playgroud) 对不起这个生硬的问题.但是很多人日复一日地使用这两个术语但我不知道.我做了一些关于这个的研究并且知道它是分开的.但不明白它是如何相关的.我将首先分享我对这两个的理解.
JAXB是XML-to-Java绑定技术,支持模式和Java对象之间以及XML实例文档和Java对象实例之间的转换.在内部,JAXB在xml和java之间进行所有这些转换.这是xml的解析器,然后它知道xml中的哪个组件对应于java中的内容并且它会中断.从JAXB转换此答案是通过xjc(或codgen插件)等工具完成的.映射可能就像
xsd:string java.lang.String
xsd:integer java.math.BigInteger
JaxRs与众不同.这是处理请求的一组规范.意思是它说"GET("/ foo")"意味着用url/foo处理一个get调用.它只说明了这一点.怎么做的?是的,这称为此规范的实现.有许多实现,如restlet,resteasy,jersey,apache cxf等.这类似于逻辑和你在数学中实现的方式.算法的想法是桶搜索.这可以以任何方式实现.在Java术语中,JaxRs是接口,这4个restlet,resteasy,jersey,apache cxf是接口的实现.
现在请说出我的理解是否正确.然后告诉他们如何相关.请帮忙 .如果可能,图片说明将更有帮助.
我是JAXB的新手,在从XML转换为Java类实例时遇到了麻烦.
我有以下XML:
<?xml version="1.0"?>
<response>
<category>client</category>
<action>Greeting</action>
<code>1000</code>
<msg>Your Connection with API Server is Successful</msg>
<resData>
<data name="svDate">2009-02-16 06:22:21</data>
</resData>
</response>
Run Code Online (Sandbox Code Playgroud)
我开发了以下Java代码:
/**
* Copyright 2013. ABN Software. All Rights reserved.<br>
* Author ...... Andre<br>
* Created ..... 14.03.2013<br>
* <br>
*/
package net.regmaster.onlinenic.model;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlElementRef;
import javax.xml.bind.annotation.XmlRootElement;
import net.regmaster.onlinenic.enumtype.OnicEnumAction;
import net.regmaster.onlinenic.enumtype.OnicEnumCategory;
import net.regmaster.onlinenic.model.resdata.GreetingResData;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* @author annik
*
*/
@XmlRootElement(name = "response")
// @XmlType( propOrder = { "category", "action", "code", "message"}) …Run Code Online (Sandbox Code Playgroud) 假设我有一个名为Test的类,就像这样
public class Test {
private String testId;
private String description;
private String department;
public Test() {}
public Test(String id,String des,String dpt) {
this.testId = id;
this.department = dpt;
this.description = des;
}
public String getTestId() {
return testId;
}
public void setTestId(String testId) {
this.testId = testId;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public String getDepartment() {
return department;
}
public void setDepartment(String department) {
this.department …Run Code Online (Sandbox Code Playgroud) 在我的应用程序中,我通过HTTP使用一些API,它返回响应为xml.我想从xml到bean自动绑定数据.
例如,绑定xml:
<xml>
<userid>123456</userid>
<uuid>123456</uuid>
</xml>
Run Code Online (Sandbox Code Playgroud)
到这个bean(也许借助于注释)
class APIResponce implement Serializable{
private Integer userid;
private Integer uuid;
....
}
Run Code Online (Sandbox Code Playgroud)
最简单的方法是什么?
Embarcadero帮助表明XML数据绑定向导也在XE2(以及XE和更早版本)中,但我看不到它(在两台机器上).它移动了吗?它没有进入XE2吗?我可以添加一个文件来安装它吗?我可以继续使用XE生成类,但我即将卸载XE .....!
有人可以帮我解决为什么我的列表框是空的吗?
XmlDocument 包含以下 XML:
<Config>
<Tabs>
<Tab Name="Test1" />
<Tab Name="Test2" />
</Tabs>
</Config>
Run Code Online (Sandbox Code Playgroud)
在我的 XAML 文件中,我尝试了以下操作
<Window>
<Grid>
<ListBox DataContext="{Binding {StaticResource Data}, XPath=//Tabs}" ItemsSource="{Binding XPath=Tab/@Name}">
</ListBox>
</Grid>
<Window>
Run Code Online (Sandbox Code Playgroud)
我知道我尚未设置与 name 属性的绑定,但是如果它正常工作,是否应该为每个选项卡节点显示 XmlDocument.XmlNode.ToString() ?
我的 C# 构造函数背后的代码:
InitializeComponent();
this.doc = new XmlDocument();
doc.LoadXml(config.document.OuterXml);
XmlDataProvider provider = (XmlDataProvider)Resources["Data"];
provider.Document = doc;
provider.Refresh();
Run Code Online (Sandbox Code Playgroud)
是config.document.OuterXml包含上述 xml 的有效文档。
我使用 Collections 处理过程代码,但我一直在尝试找出如何直接绑定到 XML。
更新:列表框为空
现在没有绑定错误,但我的列表框为空,我已经仔细检查了我的 XML 文件,甚至执行了 MessageBox.Show(provider.Document.OuterXML) 并可以确认 XmlDocument 确实具有正确的节点。
提前致谢