Java 如何检测所需的XML属性?
我有一个没有定义属性的XML内容,如下所示:Java 如何检测所需的XML属性?,java,xml,xsd,xml-parsing,Java,Xml,Xsd,Xml Parsing,我有一个没有定义属性的XML内容,如下所示: <rootElement> <subElement1/> </rootElement> 我想用XML模式(XSD)中为此XML定义的必需属性填充此XML内容 例如,根据XSD,subElement1具有必需的属性“id” (对于Java处理)检测并将这些属性添加到XML的最佳方法是什么? 我们需要添加所需的属性,并为它们设置适当的值 因此,例如上面的示例,我们需要具有以下XML: <rootEle
<rootElement>
<subElement1/>
</rootElement>
我想用XML模式(XSD)中为此XML定义的必需属性填充此XML内容
例如,根据XSD,subElement1具有必需的属性“id”
(对于Java处理)检测并将这些属性添加到XML的最佳方法是什么?
我们需要添加所需的属性,并为它们设置适当的值
因此,例如上面的示例,我们需要具有以下XML:
<rootElement>
<subElement1 id="some-value"/>
</rootElement>
使用DOM解析器。有方法遍历XML树、访问、插入和删除节点使用DOM解析器。有方法遍历XML树、访问、插入和删除节点我建议您使用JAXB。在互联网上搜索教程
进一步处理JAXB的步骤
@xmlement(name=“ElementName”,required=true)
。属性注释与此类似,@xmltattribute(required=true)
ValidationHandler
验证bean。下面是示例代码片段
marshller = JAXBContext.newInstance(pkgOrClassName).createUnmarshaller();
marshller.setSchema(getSchema(xsd)); // skip this line for unmarshaller
marshller.setEventHandler(new ValidationHandler()); // skip this line for unmarshaller
我建议您为此使用JAXB。在互联网上搜索教程 进一步处理JAXB的步骤
@xmlement(name=“ElementName”,required=true)
。属性注释与此类似,@xmltattribute(required=true)
ValidationHandler
验证bean。下面是示例代码片段
marshller = JAXBContext.newInstance(pkgOrClassName).createUnmarshaller();
marshller.setSchema(getSchema(xsd)); // skip this line for unmarshaller
marshller.setEventHandler(new ValidationHandler()); // skip this line for unmarshaller
在XML模式定义(即XSD文件)中,默认情况下属性是可选的。要使属性成为必需属性,必须定义:
<xs:attribute name="surname" type="xs:string" use="required"/>
希望这能澄清您的问题。在XML模式定义(即XSD文件)中,默认情况下属性是可选的。要使属性成为必需属性,必须定义:
<xs:attribute name="surname" type="xs:string" use="required"/>
希望这能澄清您的问题。我对Cris有相同的想法,但我认为使用此验证器,您不知道发生错误的时间点。
我认为您必须创建或扩展您自己的验证器。我对Cris有相同的想法,但我认为使用此验证器,您没有关于发生错误点的信息。
我认为您必须创建或扩展自己的验证器。我知道。但是我如何找到所需的属性呢?我被监视了SAX解析器,但没有找到如何做。检查这个。您激活验证并使用错误处理程序…可能是一个解决方案是的,我有这个想法只是为了以防万一。但是我如何找到所需的属性呢?我被监视了SAX解析器,但没有找到如何做。检查这个。激活验证并使用错误处理程序……可能是一个解决方案是的,我有这个想法只是为了以防万一,我知道如何在XSD中定义所需的属性,但这不是我的任务。我只想在XML中插入所有必需的属性一旦有了表示XML实体的JAXB类,就可以使用反射来查询所需属性的注释。我知道如何在XSD中定义所需属性,但这不是我的任务。我只想在XML中插入所有必需的属性一旦有了表示XML实体的JAXB类,就可以使用反射来查询所需属性的注释。这可能是静态XML和xsd的好方法。但是我必须在我的数据库中动态地安排属性code@Nawa:您的xsd/schema很可能会被修复。但是,XML可以是遵循该模式的任何文件。但我相信这会奏效的。否则,请详细说明您遇到的确切问题。初始xml通常不包含属性,只存在标记,由于缺少必需的属性,它可能在架构上无效。我想在初始xml中填充所有必需的属性以使其有效。@Nawa:那也可以。在解组时不要设置验证处理程序,只在编组时设置。我希望你明白我的意思。我也在更新我的帖子。这可能是静态xml和xsd的好方法。但是我必须在我的数据库中动态地安排属性code@Nawa:您的xsd/schema很可能会被修复。但是,XML可以是遵循该模式的任何文件。但我相信这会奏效的。否则,请详细说明您遇到的确切问题。初始xml通常不包含属性,只存在标记,由于缺少必需的属性,它可能在架构上无效。我想在初始xml中填充所有必需的属性以使其有效。@Nawa:那也可以。在解组时不要设置验证处理程序,只在编组时设置。我希望你明白我的意思。我也在更新我的帖子。