JAXB在解组时能得到XML注释吗?

JAXB在解组时能得到XML注释吗?,xml,jaxb,comments,unmarshalling,Xml,Jaxb,Comments,Unmarshalling,我正在用JAXB解析一个XML,但是XML结尾有一个注释,我希望解析器将其存储起来 Xml: 。。。 我需要得到评论的字符串。 JAXB有一个给我注释的函数吗?您可以将JAXB与StAX结合使用来访问后续注释 import javax.xml.bind.*; 导入javax.xml.stream.*; 导入javax.xml.transform.stream.StreamSource; 公开课演示{ 公共静态void main(字符串[]args)引发异常{ XMLInputFactory

我正在用JAXB解析一个
XML
,但是
XML
结尾有一个注释,我希望解析器将其存储起来

Xml:
。。。

我需要得到评论的字符串。

JAXB有一个给我注释的函数吗?

您可以将JAXB与StAX结合使用来访问后续注释

import javax.xml.bind.*;
导入javax.xml.stream.*;
导入javax.xml.transform.stream.StreamSource;
公开课演示{
公共静态void main(字符串[]args)引发异常{
XMLInputFactory xif=XMLInputFactory.newFactory();
StreamSource=newstreamsource(“src/forum17831304/input.xml”);
XMLStreamReader xsr=xif.createXMLStreamReader(源);
JAXBContext jc=JAXBContext.newInstance(Xml.class);
Unmarshaller Unmarshaller=jc.createUnmarshaller();
Xml=(Xml)unmarshaller.unmarshal(xsr);
while(xsr.hasNext()){
if(xsr.getEventType()==XMLStreamConstants.COMMENT){
System.out.println(xsr.getText());
}
xsr.next();
}
}
}

您可以将JAXB与StAX结合使用来访问尾部注释

import javax.xml.bind.*;
导入javax.xml.stream.*;
导入javax.xml.transform.stream.StreamSource;
公开课演示{
公共静态void main(字符串[]args)引发异常{
XMLInputFactory xif=XMLInputFactory.newFactory();
StreamSource=newstreamsource(“src/forum17831304/input.xml”);
XMLStreamReader xsr=xif.createXMLStreamReader(源);
JAXBContext jc=JAXBContext.newInstance(Xml.class);
Unmarshaller Unmarshaller=jc.createUnmarshaller();
Xml=(Xml)unmarshaller.unmarshal(xsr);
while(xsr.hasNext()){
if(xsr.getEventType()==XMLStreamConstants.COMMENT){
System.out.println(xsr.getText());
}
xsr.next();
}
}
}

Jaxb活页夹允许您阅读Blaise Doughan在这里记录的注释

要获得特定元素下方的注释,请使用

<xml>...</xml>
<!--RUID: [UmFuZG9tSVYkc2RlIyh9YUMeu8mgftUJQvv83JiDhiMR==] -->
DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance();
DocumentBuilder db=dbf.newDocumentBuilder();
Document=db.parse(您的文件);
JAXBContext jc=JAXBContext.newInstance(YourType.class.getPackage().getName());
Binder Binder=jc.createBinder();
JAXBElement-yourWrapper=binder.unmarshal(文档,YourType.class);
YourType rootElement=yourWrapper.getValue();
//在根节点下获取注释
Node domNode=binder.getXMLNode(rootElement);
Node nextNode=domNode.getNextSibling();
if(nextNode.getNodeType()==Node.COMMENT\u Node){
comment=nextNode.getTextContent();
}

Jaxb活页夹允许您阅读Blaise Doughan在这里记录的注释

要获得特定元素下方的注释,请使用

<xml>...</xml>
<!--RUID: [UmFuZG9tSVYkc2RlIyh9YUMeu8mgftUJQvv83JiDhiMR==] -->
DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance();
DocumentBuilder db=dbf.newDocumentBuilder();
Document=db.parse(您的文件);
JAXBContext jc=JAXBContext.newInstance(YourType.class.getPackage().getName());
Binder Binder=jc.createBinder();
JAXBElement-yourWrapper=binder.unmarshal(文档,YourType.class);
YourType rootElement=yourWrapper.getValue();
//在根节点下获取注释
Node domNode=binder.getXMLNode(rootElement);
Node nextNode=domNode.getNextSibling();
if(nextNode.getNodeType()==Node.COMMENT\u Node){
comment=nextNode.getTextContent();
}

API似乎没有这样的功能。您可能需要两次解析XML,使用单独的解析器在单独的过程中提取注释。@BobDalgleish-FYI,您可以使用JAXB和StAX在一次过程中完成此操作:谢谢Blaise Doughan。这对我很有用。API似乎没有这样的功能。您可能需要两次解析XML,使用单独的解析器在单独的过程中提取注释。@BobDalgleish-FYI,您可以使用JAXB和StAX在一次过程中完成此操作:谢谢Blaise Doughan。这对我有用。上面的代码不起作用。XMLStreamReader将在按照进行解组处理后指向XML的结束标记。因此,
xsr.hasNext()。XMLStreamReader将在按照进行解组处理后指向XML的结束标记。因此,
xsr.hasNext()
返回
false