- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我使用 JAXB 创建文件夹和文件层次结构
我的模型:
@XmlRootElement
public class Root {
@XmlAttribute
private String path;
@XmlElement(name = "dir")
private ArrayList<Dir> rootContentDirs = null;
@XmlElement(name = "file")
private ArrayList<FileObj> rootContentFiles = null;
public void setRootContentDirs(ArrayList<Dir> rootContentDirs) {
this.rootContentDirs = rootContentDirs;
}
public void setRootContentFiles(ArrayList<FileObj> rootContentFiles) {
this.rootContentFiles = rootContentFiles;
}
public void setPath(String path) {
this.path = path;
}
}
public class Dir {
@XmlAttribute
private String name;
@XmlElement(name = "dir")
private ArrayList dirs = null;
@XmlElement(name = "file")
private ArrayList files = null;
public void setName(String name) {
this.name = name;
}
public void setDirs(ArrayList dirs) {
this.dirs = dirs;
}
public void setFiles(ArrayList files) {
this.files = files;
}
}
public class FileObj{
@XmlAttribute
private String name;
@XmlAttribute
private long size;
@XmlAttribute
private String type;
public void setName(String name) {
this.name = name;
}
public void setSize(long size) {
this.size = size;
}
public void setType(String type) {
this.type = type;
}
}
我想制作目录和文件树:
public class XmlByJaxb extends Generator {
private static final String JAXB_XML = "./jaxb.xml";
private static Root root = null;
@Override
public void output() throws IOException {
JAXBContext context = null;
Marshaller m = null;
try {
context = JAXBContext.newInstance(Root.class, Dir.class, FileObj.class);
m = context.createMarshaller();
m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
m.marshal(root, new File(JAXB_XML));
} catch (JAXBException e) {
}
}
@Override
public void run() {
ArrayList<FileObj> rootFiles = addFiles(dir);
ArrayList<Dir> rootDirs = make(dir);
root = new Root();
root.setPath(dir.getPath());
root.setRootContentFiles(rootFiles);
root.setRootContentDirs(rootDirs);
/.../
}
但我在生成的 xml 中有奇怪的“xsi:type”和“xmlns:xsi”:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<root path="/home/phlamey/IdeaProjects/FileUtillite">
<dir name="src">
<dir xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="dir" name="test">
<dir xsi:type="dir" name="java">
/.../
所以我的问题是:这是什么意思以及如何删除它?
最佳答案
在您的 Dir
类中,您没有指定集合的类型,这就是 JAXB 添加 xsi:type
属性的原因。
你有:
@XmlElement(name = "dir")
private ArrayList dirs;
如果您的 ArrayList
将包含 Dir
的实例,那么您可以:
@XmlElement(name = "dir")
private ArrayList<Dir> dirs = null;
如果出于某种原因您不想在集合上指定类型,那么您可以在 @XmlElement
注释中指定:
@XmlElement(name = "dir", type=Dir.class)
private ArrayList dirs = null;
关于java - JAXB 生成的 xml 中的 "xsi:type"和 "xmlns:xsi",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20679163/
对于以下 XML 片段: xmlns、xmlns:xsi 和 xsi:schemaLocation 属性的确切含义是什么?它们有什么关系? : 的作用是什么? xsi:schemaLocation=
据我所知,按照惯例,默认命名空间在 XML 文档的根元素中命名为 xmlns 属性。其他 namespace 被命名为其他名称。现在,我想知道为什么 XML 方案实例命名空间总是命名为 xmlns:x
我无法根据 XSD 验证我的 XML。验证器抛出 The prefix "xsi" for attribute "xsi:schemaLocation" associated with an elem
我正在尝试针对 JMeter 中的 xsd 模式验证 xml 响应,但断言总是失败并显示错误 Cannot resolve 'job' to a type definition for element
当我尝试从部署到 WebSphere 7.0 的类调用 WebService(HP-Service Manager,如果它有帮助的话)时出现错误。当我调用它时,相同的代码起作用从 JUnit 代码..
我有一组 JAXB 生成的类,其中一些类有 setter 方法接受“对象”作为参数。例如: @XmlAccessorType(XmlAccessType.FIELD) @XmlType(name="C
我使用 JAXB 创建文件夹和文件层次结构 我的模型: @XmlRootElement public class Root { @XmlAttribute private String
为什么会出现这个错误 [Fatal Error]: The prefix "xsi" for attribute "xsi:schemaLocation" associated with an ele
启动 tomcat 时出现错误: javax.servlet.UnavailableException: org.xml.sax.SAXParseException: The prefix "xsi"
在使用 JAXB 时,我想在使用泛型时从我的 XML 元素中删除多余的命名空间/类型。我该怎么做或者我做错了什么?我想使用泛型,这样我只需编写一次代码块。 示例代码: public static vo
请帮助我摆脱这个错误,我没有得到我该如何解决这个问题? 这是我的 web.xml 和 Dispatcher-servlet.xml 文件: AngSpring index
我需要复制一个 xml header : 用我的代码: 'Export the object to XML Dim writer As New XmlSerializ
将 WCF Restful 服务与 XmlSerializer 结合使用,我得到以下响应。 0010327457 false
如何更改 Castor 映射
我正在使用 asp.net MVC4 Web Api。 我已经设置: Dim xml = GlobalConfiguration.Configuration.Formatters.XmlFormatt
这是我的问题:我需要在 XML 中显示 by 对象的名称标签,但没有可空属性:简而言之,如 。这是该对象的代码。如果 name 为空,我会得到标签 ,但是附加的属性可能会给客户端带来问题。 正如我
我正在使用 xjc 创建 JAXB 类。我正在使用以下命令 xjc -d src -p com.abc.proj the-types.xsd 我收到以下错误 parsing a schema... [
下面的代码生成下面给出的 xml,但没有 xsi:nil=true,为什么它没有生成该属性? 来自以下演示代码的 XML:
这是我所反对的一个普遍的例子。 我已经在我的模式中创建了派生类型,并且想要创建一个元素,它是一个无界列表(序列),它有一个限制,只允许三个派生类型中的两个。 从顶层的角度来说,“我有一些事件,在一种情
我发现我们有多个 url 作为此属性的值,就像在 spring 中一样: 为什么需要它以及它的用途是什么? Spring 是否会访问 url 并进行验证?xmlns 和 xsi:schemaLoca
我是一名优秀的程序员,十分优秀!