我有一个带有注释元素的xsd,而注释元素又包含appinfo元素。我正在使用appinfo元素传递有关模式的一些自定义信息,并且需要在遍历元素时提取appinfo的内容。
来自xsd。
的片段<xsd:element name = "Entity">
<xsd:annotation>
<xsd:appinfo>EntityReference</xsd:appinfo>
</xsd:annotation>
<xsd:complexType>
<xsd:sequence>
<xsd:element
minOccurs = "0"
name = "Id"
type = "tns:guid"/>
<xsd:element
minOccurs = "0"
name = "LogicalName"
nillable = "true"
type = "xsd:string"/>
<xsd:element
minOccurs = "0"
name = "Name"
nillable = "true"
type = "xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
这是我用来从注释中提取应用程序信息的代码。
SchemaAnnotation annotation = element.getAnnotation();
if(annotation!=null){
XmlObject[] ai = annotation.getApplicationInformation();
for(XmlObject obj : ai){
if(obj!=null){
//System.out.println(obj.toString());
obj.getDomNode().getNodeValue();
}
}
}
但我得到一个空值。然而,obj.toString()返回此
<xml-fragment xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:request="http://ns1" xmlns:tns="http://ns2">EntityReference</xml-fragment>
如何获取内容&#34; EntityReference&#34;来自appinfo?我想编写一个自定义处理程序来解析字符串内容吗?
由于
答案 0 :(得分:0)
DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
Document document = builder.parse(new ByteArrayInputStream(obj.toString().getBytes()));
NodeList list = document.getChildNodes();
Node node = list.item(0);
if (node.getFirstChild() != null
&& node.getFirstChild().getNodeType() == Node.TEXT_NODE) {
//Text tn = (Text) node.getFirstChild();
System.out.println(node.getFirstChild().getTextContent());
}