Tag: sax

如何从Sax XmlHandler输出CDATA部分

这是如何将字符从Oracle编码为Xml的后续问题? 在我的环境中,我使用Java将结果集序列化为xml。 我无法访问输出流本身,只能访问org.xml.sax.ContentHandler。 当我尝试输出CDATA部分中的字符时: 它基本上是这样的: xmlHandler.startElement(uri, lname, “column”, attributes); String chars = “”; xmlHandler.characters(chars.toCharArray(), 0, chars.length()); xmlHandler.endElement(uri, lname, “column”); 我明白了: <![CDATA[33665]]> 但我想要这个: 那么如何使用Sax ContentHandler输出CDATA部分?

Java(JAXP)XML解析DocumentBuilder的差异

两者之间有什么区别吗? DocumentBuilder.parse(InputStream)和 DocumentBuilder.parse(InputSource) ? 我只能发现,对于第一种情况,解析器检测流中的编码,因此它更安全,而后者我不确定是否需要设置编码。 我应该知道的任何其他要点(例如表演)?

使用sax和java从xml文件中删除多个节点

我是使用Java和SAX解析器进行XML解析的新手。 我有一个非常大的XML文件,因为它的大小我被建议使用SAX解析器。 我已经完成了部分任务的解析,它按预期工作。 现在,XML作业还剩下一个任务:根据用户的请求删除/更新某些节点。 我能够通过名称找到所有标签,更改其data属性等。如果我能够使用SAX执行这些操作,也可以删除。 示例XML描述了某些情况下的一些function。 用户的输入是“case”的名称( case2 , case2 )。 somefunctionality true somefunctionality false 如果用户想要删除其中一种情况(例如case1 )而不仅仅是case1标记,则必须删除完整的rule标记。 如果要删除case1 ,XML将变为: somefunctionality false 我的问题是,这可以使用SAX完成吗? 此时我无法使用DOM或任何其他解析器。 只有其他选择更糟糕:字符串搜索。 如何使用SaxParser完成?

是否有一个SaxParser读取json并触发事件,因此它看起来像xml

这将是很棒的,因为它允许我的xml内容读取json w / out除了不同的sax解析器之外的任何更改。

SAX解析 – 获取文本节点的有效方法

鉴于此XML片段 Gambardella, Matthew 在SAX中,很容易获得属性值: @Override public void startElement (String uri, String localName, String qName, Attributes attributes) throws SAXException{ if(qName.equals(“book”)){ String bookId = attributes.getValue(“id”); … } } 但是为了获得文本节点的值,例如标签的值,这很难…… private StringBuffer curCharValue = new StringBuffer(1024); @Override public void startElement (String uri, String localName, String qName, Attributes attributes) throws SAXException { if(qName.equals(“author”)){ curCharValue.clear(); } } @Override public void […]

如何在Java中选择saxon TransformerFactory

在我的Web应用程序中,我需要使用Saxon TransformerFactory才能使用XSLT 2.0,但我无法使用setProperty方法,因为我在Web服务器上没有这个权限并且有一个安全管理器。 所以我读过应该可以这样做: 如果可用,请使用Services API(如JAR规范中所述)来确定类名。 Services API将在运行时可用的jar文件中的META-INF / services / javax.xml.transform.TransformerFactory文件中查找类名。 我在WEB-INF / lib / saxon9.jar中找到了这个文件但是当我实现TransformerFactory时,总是选择默认工厂而不是Saxon工厂。 我如何选择Saxon Transformer Factory? 谢谢

帮助Java SAX解析器理解错误的xml

我正在解析从网站返回的XML,但遗憾的是它有点格式错误。 我得到的XML如下: 据我所知,这是无效的,因为£ 是HTML字符,而不是XML字符,绝对不能出现在属性中。 假设我不能告诉网站遵守规则,我该怎么做才能解决这个问题? 我正在考虑使用FilterInputStream来过滤到达SAX解析器之前到达的数据,但这似乎超过了顶部。

如何解决SAXException:in中的元素无效

我尝试以下列方式从Web服务获取结果。 List result = new Vector(); LibrarySearchRequest request = new LibrarySearchRequest(queryString); LibrarySearchServicePortTypeProxy proxy = new LibrarySearchServicePortTypeProxy(); LibrarySearchServicePortType port = proxy.getLibrarySearchServicePortType(); LibrarySearchResponse response = port.process(request); librarysearch.soft.Book[] books = response.getBooks(); 当我这样做时,我得到以下exception(stacktrace): org.xml.sax.SAXException: Invalid element in librarysearch.soft.Book – book at org.apache.axis.encoding.ser.BeanDeserializer.onStartChild(BeanDeserializer.java:258) at org.apache.axis.encoding.DeserializationContext.startElement(DeserializationContext.java:1035) at org.apache.axis.message.SAX2EventRecorder.replay(SAX2EventRecorder.java:165) at org.apache.axis.message.MessageElement.publishToHandler(MessageElement.java:1141) at org.apache.axis.message.RPCElement.deserialize(RPCElement.java:236) at org.apache.axis.message.RPCElement.getParams(RPCElement.java:384) at org.apache.axis.client.Call.invoke(Call.java:2467) at org.apache.axis.client.Call.invoke(Call.java:2366) at org.apache.axis.client.Call.invoke(Call.java:1812) at […]

SAXParseException:prolog中不允许使用内容

我需要将以下文件添加到我的Tomcat的’/ conf’目录中: 添加此文件后,Tomcat启动时出现以下错误“ ERROR ecmdefault util.digester.Digester 18:37:14,477 localhost-startStop-1 : Parse Fatal Error at line 1 column 1: Content is not allowed in prolog. org.xml.sax.SAXParseException: Content is not allowed in prolog. at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:195) at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.fatalError(ErrorHandlerWrapper.java:174) at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:388) at com.sun.org.apache.xerces.internal.impl.XMLScanner.reportFatalError(XMLScanner.java:1427)

如何在startElement中使用SAX解析器从XML获取元素的值?

是否可以从startElement函数中的XML文件中获取元素的内容,该函数是SAX处理程序的覆盖函数? 以下是规格。 1)XML文件 Rakesh Mishra Bangalore John Davis Chennai Rajesh Sharma Pune 2) startElement函数 @Override public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException { …….code in here………. } 3)预期结果 element name : employee attribute name : id attribute value: 111 firstName : Rakesh lastName : Mishra location : Bangalore element name […]