当前位置: 首页 > 知识库问答 >
问题:

sml-主类获取null

云凌
2023-03-14

我有xml,我需要解救:

 <?xml version="1.0" encoding="utf-8"?>
    <!DOCTYPE nitexp SYSTEM "http://www.nitml.org/nitexp/1.0/nitexp.dtd" [<!ENTITY % nitcml SYSTEM "http://www.nitml.org/nitcml/1.0/nitcml.dtd" > %nitcml;]>
    <nitexp xmlns="http://www.nitml.org/nitexp/1.0">
    <item type="sasa">
    <nd>nitl20043581</nd>
    <source>
    <name>name</name>
    <issue>
    <publicdate>20200210</publicdate>
    <page>32</page>
    <column></column>
    </issue>
    </source>
    <title>Immof inanz </title>
    <author>hshsa</author>
    <annotation>
    <nitcml xmlns="http://www.nitml.org/nitcml/1.0">
    </nitcml>
    </annotation>
    <content>
    <nitcml xmlns="http://www.nitml.org/nitcml/1.0">
    <body><p><l>dsadasdasd</l><l>dasdasd</l><l> dasdas</l><l></l></p></body>
    </nitcml>
    </content>
    <nmms><importdate>20200210</importdate>
    <topic code="np01"/>
    <mark> </mark>
    <useraction></useraction>
    <weight></weight>
    <group></group><attachments></attachments><note>
    <nitcml xmlns="http://www.nitml.org/nitcml/1.0"></nitcml></note>
    <translation><nitcml xmlns="http://www.nitml.org/nitcml/1.0"></nitcml>
    </translation>
    <field>
    <value>ni</value>
    <value>20a04</value>
    <value>358d1</value>
    </field>
    </nmms>
    </item>
    </nitexp>

我可以很容易地整理它,但是当我在另一边尝试时,我得到null Item。我的主要类别是:

  @Builder
@AllArgsConstructor
@NoArgsConstructor
@Setter
@ToString
@XmlRootElement(name = "nitexp", namespace="http://www.nitml.org/nitexp/1.0")
public class Article {

    private Item item = Item.builder().build();

    @XmlElement(name = "item")
    public ArticleItem getItem() {
        return item;
    }

}

然后

  @Builder
@AllArgsConstructor
@NoArgsConstructor
@Setter
@ToString
@XmlType(propOrder={"type","nitoid","source","title","author","annotation","content","nmms"})
public class ArticleItem {

    private String type;
    private String nitoid;
    private ArticleSource source = new ArticleSource();
    private String title;
    private String author;
    private String annotation;
    private String content;
    private String nmms;


    @XmlAttribute(name = "type")
    public String getType() {
        return type;
    }

...等等

我使用Java12,我的pom依赖项中有jaxb-api和glassfish.jaxb。我试图将@XMLElement注释放在getter和setter上。我试图将XMLRootElement注释放在每个嵌套类上,但没有运气。我还尝试不使用@Builder,也不初始化类对象。我甚至尝试修改我的xml并剪切第二行,但这不是问题。现在我甚至不知道我可以做什么不同,要更改什么以及如何检查哪里可能存在问题。我会感谢任何建议和想法。谢谢!

共有1个答案

何德寿
2023-03-14

以下设置对我有用:

物品类别:

@Data
@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name = "nitexp", namespace="http://www.nitml.org/nitexp/1.0")
public class Article {

    @XmlElement(name = "item", namespace="http://www.nitml.org/nitexp/1.0")
    private ArticleItem  item;

}

ArticleItem类别:

@Data
@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name = "item", namespace="http://www.nitml.org/nitexp/1.0")
public class ArticleItem {

    @XmlAttribute
    private String type;

    @XmlElement(name = "nd", namespace="http://www.nitml.org/nitexp/1.0")
    private String nitoid;

    @XmlElement(name = "title", namespace="http://www.nitml.org/nitexp/1.0")
    private String title;

    @XmlElement(name = "author", namespace="http://www.nitml.org/nitexp/1.0")
    private String author;

}

解组过程:

    Unmarshaller unmarshaller = JAXBContext.newInstance(Article.class).createUnmarshaller();
    StringReader reader = new StringReader(data);
    Object obj = unmarshaller.unmarshal(new StreamSource(reader));
    System.out.println(obj);

输出:

Article(item=ArticleItem(type=sasa, nitoid=nitl20043581, title=Immof inanz , author=hshsa))
 类似资料:
  • 我在从mysql数据库检索子类别时遇到一些问题。我想显示父类别的子类别。我只能得到主类别的最后一个子类别。第一个子类别不显示**。在我的表**中,我有类别\u id和类别\u父\u id。其中类别\u父\u id对于父类别将为“0”。提前谢谢 当我删除

  • 问题内容: 在执行此代码时,我在第81行上收到了java.lang.UnsupportedOperationException。我知道发布整个代码违反了赌注的做法,但是我认为除非发布整个代码,否则传达我正在做的事情将非常困难。 基本上,我想从列表中删除所有出现的元素,所以我正在做List.removeAll(Collection)。我不明白在81号线上我在做什么错。谢谢您的帮助! 输出/ Stac

  • 问题内容: 有没有一种方法可以找到Java主类的所有类依赖关系? 我一直在手动筛选主类及其导入的内容,但是后来意识到,因为不必导入同一包中的类,所以我整理了一个不完整的列表。 我需要一些可以递归地找到依赖关系的东西(也许到定义的深度)。 问题答案: 只需使用javac即可轻松完成。删除您的类文件,然后编译主类。javac将递归地编译它需要的任何类(前提是您不要在名称奇怪的文件中隐藏包私有类/接口)

  • 我对Spring Boot是新手,对Java也比较陌生。我正在使用Spring文档中的Github OAuth2示例应用程序。开箱即用,一切都按预期工作,但是,当我试图将facebook()或github()方法移到一个新类中时,它们无法从src/main/resources/application.yml文件中获取信息。我试过将类放在与主应用程序类相同的包中,也试过将类放在另一个包中。 src/

  • 我正在制作自己的Start/BookmarkPage作为一个业余项目。 我想以一种干净的方式组织我的书签。我喜欢苹果通过请求meta应用程序图标来完成这一工作的方式,所以我制作了一个JavaScript/Ajax/PHP函数来完成这项工作。 然而,当一个网站的头部没有应用程序图标时,我想知道该网站使用的主颜色,就像你在这里看到的那样 safari上的苹果书签(背景有网站的主色) chrome书签(

  • X2.2.0新增 sp_get_current_theme($default_theme='') 功能: 获取当前主题名 参数: $default_theme: 指定的默认主题 返回: 类型string,主题名 使用: $theme = sp_get_current_theme();