嘿所以我想知道如何使用<Category />
编写一个空标记DocumentBuilderFactory
(基于此resource,库 {{1} } ),至于我必须应用if条件javax.xml.parsers.*;
,然后创建if object.getCategory() != null
,否则忽略它。
Category Tag
和架构
//add the Category
if(excel.getCategory() != null){
Element Category = doc.createElement("category");
Category.appendChild(doc.createTextNode(excel.getCategory()));
Rows.appendChild(Category);
}
我注意到如果我添加一个null的textnode,<xs:complexType name="data">
<xs:all>
<xs:element name="Category" type="xs:string" minOccurs="1" />
<!-- other columns.. -->
</xs:all>
</xs:complexType>
将返回一堆transformer.transform(source, result);
错误。有没有办法配置变换器知道TextNode有意留空?然后创建NullException
或<Category />
。
答案 0 :(得分:1)
//add the Category
Element Category = doc.createElement("category");
Rows.appendChild(Category);
if(excel.getCategory() != null){
Category.appendChild(doc.createTextNode(excel.getCategory()));
}
这里我无条件地将category
元素添加到Rows
,但只有getCategory()
非空时才添加文本节点子元素。如果为null,则会创建一个空的category
元素,该元素将序列化为<category />
的XML。
如果您希望能够在XML中区分null
的{{1}}值和空字符串值,那么通常的XML模式习惯用法是使元素“可以为空”
excel.getCategory()
并用<xs:complexType name="data">
<xs:all>
<xs:element name="Category" type="xs:string" nillable="true" />
<!-- other columns.. -->
</xs:all>
</xs:complexType>
xsi:nil
这将产生
//add the Category
Element Category = doc.createElement("category");
Rows.appendChild(Category);
if(excel.getCategory() != null){
Category.appendChild(doc.createTextNode(excel.getCategory()));
} else {
Category.setAttributeNS(XMLConstants.W3C_XML_SCHEMA_INSTANCE_NS_URI,
"xsi:nil", "true");
}
<category />
和
excel.getCategory().equals("")
<category xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true" />