我需要解析一个连续的格式良好的XML元素流,仅向其提供一个已经构造的java.io.Reader
对象。这些元素没有包含在根元素中,也没有以XML标头开头,例如<?xml version="1.0"?>"
,但它们都是有效的XML。
使用Java org.xml.sax.XMLReader
类是行不通的,因为XML
Reader希望从封闭的根元素开始解析格式良好的XML。因此,它只是读取流中的第一个元素(它被视为根元素),而在下一个元素中失败,使用典型
org.xml.sax.SAXParseException:根元素后面的文档中的标记必须格式正确。
对于不包含根元素但存在或可以定义根元素的文件(称为MyRootElement),文件可以执行以下操作:
Strint path = <the full path to the file>;
XMLReader xmlReader = SAXParserFactory.newInstance().newSAXParser().getXMLReader();
StringBuilder buffer = new StringBuilder();
buffer.append("<?xml version=\"1.0\"?>\n");
buffer.append("<!DOCTYPE MyRootElement ");
buffer.append("[<!ENTITY data SYSTEM \"file:///");
buffer.append(path);
buffer.append("\">]>\n");
buffer.append("<MyRootElement xmlns:...>\n");
buffer.append("&data;\n");
buffer.append("</MyRootElement>\n");
InputSource source = new InputSource(new StringReader(buffer.toString()));
xmlReader.parse(source);
我已经通过将部分java.io.Reader
输出保存到文件中来测试了上述内容,并且可以正常工作。但是,这种方法不适用于我的情况,并且无法插入此类额外的信息(XML标头,根元素),因为java.io.Reader
已经构造了传递给我的代码的对象。
本质上,我正在寻找“碎片化的XML解析”。因此,我的问题是,可以使用标准Java
API(包括org.sax.xml.*
和java.xml.*
程序包)完成此操作吗?
SequenceInputStream可以解决:
SAXParserFactory saxFactory = SAXParserFactory.newInstance();
SAXParser parser = saxFactory.newSAXParser();
parser.parse(
new SequenceInputStream(
Collections.enumeration(Arrays.asList(
new InputStream[] {
new ByteArrayInputStream("<dummy>".getBytes()),
new FileInputStream(file),//bogus xml
new ByteArrayInputStream("</dummy>".getBytes()),
}))
),
new DefaultHandler()
);
问题内容: 我正在尝试在一个郊区的数据库中搜索所有属性。我已经读到它与HTML代码204有关,但我仍然不了解该做什么或真正意味着什么。我有一段时间没有做过任何JS或PHP了,所以这可能是一个很愚蠢的错误,但是我一生都无法解决。请帮忙! 这是我的JS代码: 这是我的PHP代码: 提前致谢。 问题答案: 错误是浏览器的编译器正在“注释”所有php,并添加了空HTML标记。然后,由于有一个“空”文档而变
我在返回带有指定对象根名的对象列表时遇到了一些麻烦。我试过几种不同的方法。我确信我正在做一件像往常一样难以置信的愚蠢的事情,我很感激任何帮助。 这是我的东西
假设我有以下XML模型: 如果我将类以下约定重命名为: 这两种元素都是: 来自的XML 看起来像这样: 但我希望它看起来像这样: 我做错什么了吗?我看到我可以使用@JsonProperty,它可以工作,但只适用于字段,我觉得在XML元素上使用JsonProperty是错误的。我的模型类可以命名为CUSTOMER、PERSON、USER吗?或者我应该重命名它们吗?如果重命名它们更好,我应该使用Jso
本文向大家介绍Python解析xml中dom元素的方法,包括了Python解析xml中dom元素的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Python解析xml中dom元素的方法。分享给大家供大家参考。具体实现方法如下: 希望本文所述对大家的Python程序设计有所帮助。
问题内容: 我目前正在使用SAX(Java)来解析少量不同的XML文档,每个文档代表不同的数据,并且结构略有不同。因此,每个XML文档都由不同的SAX类(子类)处理。 但是,在所有这些不同的文档中可能会出现一些XML结构。理想情况下,我想告诉解析器“嘿,当你到达一个元素,只要使用阅读它,并给我回的结果。如果你达到,使用读它,并给我回的是结果”。 但是,我看不到这样做的明显方法。 我是否应该只制作一
问题内容: 我有这样的XML结构: 我不知道如何收集SubItemField元素的值和属性,我的代码是这样的: 我需要属性和值,但是获取我知道的值的唯一方法就是使用 而不是我的自定义类型。我正在使用xml.Unmarshal btw。 任何想法? 谢谢。 问题答案: 我想出了如何做到这一点,我只需要在结构中添加一个匹配的新属性即可,如下所示: 我希望这可以帮助某人,因为没有相关文档或示例。