相关疑难解决方法(0)

解析java中的xml字符串?

你如何解析存储在java字符串对象中的xml?

Java的XMLReader仅解析URI或输入流中的XML文档.是不是可以从包含xml数据的String解析?

现在我有以下内容:

try {
    SAXParserFactory factory = SAXParserFactory.newInstance();
    SAXParser sp = factory.newSAXParser();
    XMLReader xr = sp.getXMLReader(); 

    ContactListXmlHandler handler = new ContactListXmlHandler();
    xr.setContentHandler(handler);
    xr.p
} catch (ParserConfigurationException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
} catch (SAXException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)

在我的处理程序上我有这个:

public class ContactListXmlHandler extends DefaultHandler implements Resources {

    private List<ContactName> contactNameList = new ArrayList<ContactName>();

    private ContactName contactItem;

    private StringBuffer sb;

    public List<ContactName> getContactNameList() {
        return contactNameList;
    }

    @Override
    public void startDocument() throws …
Run Code Online (Sandbox Code Playgroud)

java xml

20
推荐指数
1
解决办法
3万
查看次数

在java中解析非常大的XML文档(以及更多)

(以下所有内容均以Java编写)

我必须构建一个应用程序,它将输入可能非常大的XML文档作为输入.该文档是加密的 - 不是使用XMLsec,而是使用我客户的预先存在的加密算法 - 将分三个阶段进行处理:

首先,根据上述算法对流进行解密.

其次,扩展类(由我提供的API的第三方编写)将读取文件的某些部分.读取的数量是不可预测的 - 特别是它不能保证在文件的标题中,但可能出现在XML中的任何位置.

最后,另一个扩展类(相同的交易)将输入XML细分为1..n子集文档.这些可能会在某些方面与第二个操作处理的文档部分重叠,即:我相信我需要回放我用来处理这个对象的任何机制.

这是我的问题:

有没有办法在没有一次将整个数据读入内存的情况下执行此操作?显然我可以将解密实现为输入流过滤器,但我不确定是否可以按照我描述的方式解析XML; 通过遍历,需要收集第二步的信息,然后通过倒回文档并再次传递它以将其拆分为作业,理想情况下释放文档的所有不再使用的部分他们已经通过了.

java xml streaming memory-management sax

18
推荐指数
2
解决办法
2万
查看次数

解析非常大的XML文件并编组到Java对象

我有以下问题:我有非常大的XML文件(如300+ Megs),我需要解析它们以便将一些值添加到数据库中.这些文件的结构也非常复杂.我想使用Stax Parser,因为它提供了一次拉解析(并因此处理)XML文件的一部分的可能性,因此不会将整个内容加载到内存中,但另一方面获取值Stax(至少在这些XML文件上)很麻烦,我需要编写大量代码.从后一种观点来看,如果我可以将XML文件编组为Java对象(就像JAX-B那样),那将对我有所帮助,但是这会将整个文件加上大量的Object实例同时加载到内存中.

我的问题是,有没有办法按顺序解析(或只是部分解析)文件,然后只将那些部分编组到Java对象中,这样我就可以轻松处理它们而不会让内存陷入困境?

java xml

6
推荐指数
2
解决办法
5957
查看次数

标签 统计

java ×3

xml ×3

memory-management ×1

sax ×1

streaming ×1