![](/img/trans.png)
[英]Java XML parsing with DocumentBuilderFactory - null nodes?
[英]Java XML DocumentBuilderFactory write empty tags <Tag /> from null values
嘿,所以我想知道如何用DocumentBuilderFactory
(基于此资源 ,库javax.xml.parsers.*;
)编写一个空标签,例如<Category />
,就目前而言,如果条件为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);
}
和架构
<xs:complexType name="data">
<xs:all>
<xs:element name="Category" type="xs:string" minOccurs="1" />
<!-- other columns.. -->
</xs:all>
</xs:complexType>
而且我注意到,如果我添加了一个null的textnode,则是converter.transform transformer.transform(source, result);
将返回一堆NullException
错误。 有没有一种方法可以配置转换器以知道TextNode被故意留空了? 然后依次创建<Category />
或<Category></Category>
。
//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时才添加文本节点子元素。 如果为null,则将创建一个空的category
元素,该元素将作为<category />
序列化为XML。
如果你希望能够在一间XML区分null
的值excel.getCategory()
和一个空字符串值,然后为通常的XML模式成语是使元素“的nillable”
<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" />
当excel.getCategory() == null
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.