Tag: sax

如何将XSD类型导入根模式?

这是我在foo.xsd现有XSD架构, foo.xsd声明了类型: 这是另一个声明元素的模式: 这是我从Java中的SAX解析器得到的: “The namespace attribute ‘foo’ of an element information item must not be the same as the targetNamespace of the schema it exists in.” 我究竟做错了什么?

如何使用SAX正确解析XML?

我从REST服务接收XML文档,该文档将使用SAX进行解析。 请参阅以下由XSD生成的示例。 设置解析器不是问题。 我的主要问题是startElement() , endElement()方法等中的实际处理。我不明白如何提取我需要的项目并存储它们,因为它们有点“嵌套”。 例 ConnectionList可以出现一次或两次,并且可以包含任意数量的Connection元素,其中包含有关连接的详细信息。 基本上,我需要一个包含Date , Transfers和Time的所有连接的列表。 我是否必须为每个元素创建一个类? 据我所知,我不知何故需要做以下事情:如果解析器遇到… ConnectionList :创建新的ConnectionList对象并将其放入ConnectionList列表中 Connection :创建一个新的Connection对象并将其放入Connections列表中 Date , Transfers , Time (仅当父级是Duration ):将节点值存储在当前的Connection对象中 我真的很感激任何帮助,提示,想法,摘要我是如何实现这一目标的。 谢谢 :-) 罗伯特 0815 b3lcM_Yiyq7dqL9 dZbgZfDH8j1hb1i 00d00:18:00 W5a47DRkc7XDZjhwq_s5Un. GG56XN6zgiJF804mE_N4o t8mn634zjCZsRPyxj_e_-UYMH D0MiUwW9nuuM_uykvawg2C07pwHL

更好的解析xml的方法

多年来我一直在解析这样的XML,我不得不承认,当不同元素的数量变得越来越大时,我发现它有点无聊和疲惫,这就是我的意思,样本虚拟XML: 2003/07/04 123 Acme Alpha 987 Coupler 5 654 Connector 3 579 Clasp 1 这是相关部分(使用sax): public class SaxParser extends DefaultHandler { boolean isItem = false; boolean isOrder = false; boolean isDate = false; boolean isCustomerId = false; private Order order; private Item item; @Override public void startElement(String namespaceURI, String localName, String qName, Attributes atts) { […]

差异SAXParserFactory XMLReaderFactory。 哪一个选择?

它们似乎都有相同的目的(创建一个XMLReader)。 一些教程包含一个,另一个包含。 的SAXParserFactory: http://docs.oracle.com/javase/7/docs/api/javax/xml/parsers/SAXParserFactory.html 似乎更可配置 更多的锅炉板代码 官方支持api 示例代码: // SAXParserFactory SAXParserFactory factory = SAXParserFactory.newInstance(); SAXParser parser = factory.newSAXParser(); XMLReader reader = parser.getXMLReader(); reader.parse(new InputSource(“document.xml”)); XMLReaderFactory: http://docs.oracle.com/javase/7/docs/api/org/xml/sax/helpers/XMLReaderFactory.html 两行代码少 不太可配置 社区支持,没有保证 示例代码: // XMLReaderFactory XMLReader xmlReader = XMLReaderFactory.createXMLReader(); xmlReader.parse(new InputSource(“document.xml”)); 题: 这些是主要的差异还是有一些我已经监督过。 你应该选择哪一个?

如何在Java中有效地使用SAXParseException

我正在validationJava中的XMLSchema,并且当我有无效的内容模型时会抛出SAXParseExceptions。 我将使用这些exception来突出validation失败的位置 – 但SAXParseExceptions似乎有点过低。 例如,对于枚举失败,我得到的有效性错误是所提供的值与一个例外中的内容模型不匹配,以及它在下一个例子中应用的元素。 我想我需要一个实用程序,它抽象一点将相关的错误合并在一起,并将exception文本解析为可用的exception属性。 这是一种合理的方法,还是我只是缺少某些东西,或者是图书馆或助手class? 更新@timgilbert,感谢您的回复。 例如,我在t’internet上发现了一个SAXParseException cvc-pattern-valid: Value ‘en’ is not facet-valid with respect to pattern ‘([a-zA-Z]{1,8})(-[a-zA-Z0-9]{1,8})*’ 对我来说关键的事情是 此例外适用的元素’en’。 为什么我不能调用exception.getElement()或者其他东西,为什么不对有问题的元素进行XPath? 内存文档比行号和列号更有用! 这是模式validation失败。 为什么我不能得到类似可能类型的失败的枚举和对适当的失败的引用? validation失败的实际模式。 接下来会抛出另一个exception告诉我’en’元素的值导致我需要合并的问题 我希望能够做的一个例子就是让人们提交一份文件,并通过用户友好的消息突出显示validation失败的文件 – 上面的错误消息似乎不太友好……必须解析单引号只是感觉就像一场等待发生的事故:) 我想我可能做错了’reference-to-element’的事情,也许我应该默认将文档的身份转换作为validation的一部分,并使用我的validation错误属性来扩充转换可以用CSS挑选出来。 如果我需要解析消息以使它们更友好,那仍然无济于事…… Re:紧密绑定,javax.xml.validation.Validator.validate()抛出org.xml.sax.SAXException无论如何 – 不知道如何摆脱假设绑定… 干杯

如何在针对XML模式validationXML文件时获取错误的行号

我正在尝试针对W3C XML SchemavalidationXML。 以下代码执行作业并报告何时发生错误。 但是我无法得到错误的行号。 它总是返回-1。 有没有简单的方法来获得行号? import java.io.File; import javax.xml.XMLConstants; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.transform.Source; import javax.xml.transform.dom.DOMSource; import javax.xml.transform.stream.StreamSource; import javax.xml.validation.Schema; import javax.xml.validation.SchemaFactory; import javax.xml.validation.Validator; import org.w3c.dom.Document; import org.xml.sax.SAXParseException; public class XMLValidation { public static void main(String[] args) { try { DocumentBuilder parser = DocumentBuilderFactory.newInstance().newDocumentBuilder(); Document document = parser.parse(new File(“myxml.xml”)); SchemaFactory factory = […]

Java使用SAX处理XML

我有需要用给定结构解析的XML: Text Text 我使用SAX解析器来解析它: RootElement root=new RootElement(“root”); android.sax.Element page_info=root.getChild(“tag”).getChild(“child”); page_info.setStartElementListener(new StartElementListener() { @Override public void start(Attributes attributes) { /*—————*/ } }); 我想读取第二个“tag”元素属性( label1和label2 ),但我的StartElementListener读取第一个标记,因为它们具有相同的结构和属性(那些label=”idAd”和label=”idNumPage” )来区分它们。 如何告诉StartElementListener只处理第二个元素?

在独立应用程序中的hibernate中配置sessionFactory

我正在尝试制作第三方简单的独立/ swing应用程序,它使用hibernate连接数据库以用于另一个应用程序,所以这就是我所做的: 1-使用的jar子: hibernate-core-3.5.1-Final hibernate-entitymanager-3.5.1-Final hibernate-jpa-2.0-api-1.0.0.Final hibernate-annotations-3.5.1-Final hibernate-commons-annotations-3.2.0.Final dom4j-1.6.1 slf4j-api-1.6.4 slf4j-log4j12-1.6.4 log4j-1.2.16.jar commons-collections-3.2 jta-1.1 mysql-connector-java-5.1.14 (or compatible connector with your DB) commons-logging-1.1.1 commons-collections-3.2 2- hibernate.cfg.xml(它在src文件夹中): true true com.mysql.jdbc.Driver jdbc:mysql://127.0.0.1:3306/myapp myuser mypass org.hibernate.dialect.MySQLDialect thread 3- SessionFactoryHelper: public class SessionFactoryHelper { private static final SessionFactory sessionFactory; static { try { /* * Build a SessionFactory object from […]

SAX解析器跳过一些不被解析的元素?

所以,我有一个类似的文件 所以,我有一个条件,如果ts =“2”然后做某事……现在问题是当它发现ts =“1”时它仍然扫描标签 然后到达 当条件与解析中断不匹配并直接查找下一个事务标记时,有没有办法?

Android:如何显示相同标记名称的所有XML值

我有ff。 来自URL的XML: Michael De Leon 5, Cat Street John Smith 6, Dog Street 我想显示两个PhonebookEntry值(名字,姓氏,地址)。 目前,我的代码仅显示John Smith的PhonebookEntry(最后一个条目)。 这是我的代码。 ParsingXML.java package com.example.parsingxml; import java.net.Proxy; import java.net.Socket; import java.net.SocketAddress; import java.net.URL; import java.net.URLConnection; import javax.xml.parsers.SAXParser; import javax.xml.parsers.SAXParserFactory; import org.xml.sax.InputSource; import org.xml.sax.XMLReader; import android.app.Activity; import android.os.Bundle; import android.util.Log; import android.widget.TextView; public class ParsingXML extends Activity { /** Called when […]