Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Java中从xml文件中提取大量字符_Java_Xml_Search_Xpath_Extract - Fatal编程技术网

如何在Java中从xml文件中提取大量字符

如何在Java中从xml文件中提取大量字符,java,xml,search,xpath,extract,Java,Xml,Search,Xpath,Extract,我有一个很大的xml文件,我不想解析它,我只想存储…之间的每个字符,它们是xml文件中的标记 我如何才能做到这一点?您可能需要解释为什么不想解析它,因为这将有助于建议其他解决方案 也就是说,如果您可以为该节点构造XPath,则始终可以使用XPath获取该信息。看 更新 鉴于新的信息,这不是您想要的解决方案。如果要将xml视为字符串,最好将其读入StringBuilder(StringBuffer的更快、线程不安全版本)。如果您在使用StringBuffer时遇到问题,请发布您尝试的代码和错误消息

我有一个很大的xml文件,我不想解析它,我只想存储
之间的每个字符,它们是xml文件中的标记


我如何才能做到这一点?

您可能需要解释为什么不想解析它,因为这将有助于建议其他解决方案

也就是说,如果您可以为该节点构造XPath,则始终可以使用XPath获取该信息。看

更新


鉴于新的信息,这不是您想要的解决方案。如果要将xml视为字符串,最好将其读入StringBuilder(StringBuffer的更快、线程不安全版本)。如果您在使用StringBuffer时遇到问题,请发布您尝试的代码和错误消息。它的最大大小是
java.lang.Integer.max\u VALUE
,即2147483647。

您可能需要解释为什么不想解析它,因为这有助于建议其他解决方案

也就是说,如果您可以为该节点构造XPath,则始终可以使用XPath获取该信息。看

更新


鉴于新的信息,这不是您想要的解决方案。如果要将xml视为字符串,最好将其读入StringBuilder(StringBuffer的更快、线程不安全版本)。如果您在使用StringBuffer时遇到问题,请发布您尝试的代码和错误消息。它的最大大小是
java.lang.Integer.max_VALUE
,即2147483647。

如果问题是您试图提取的数据适合内存,但整个XML文件不适合,那么使用流式解析器,如。

如果问题是您试图提取的数据适合内存,但整个XML文件不适合,然后使用流式解析器,例如。

如果不解析文件,就无法准确地找到
元素中的字符。您可以在99%的时间内完成某些工作,但如果有人做了一些您意想不到的事情,例如在开始标记中添加空格,或者将
元素注释掉,或者将
元素的一部分添加到外部实体中,则该工作就会中断


咬紧牙关。如果是XML,则需要XML解析器来读取。

如果不解析文件,就无法在
元素中准确找到字符。您可以在99%的时间内完成某些工作,但如果有人做了一些您意想不到的事情,例如在开始标记中添加空格,或者将
元素注释掉,或者将
元素的一部分添加到外部实体中,则该工作就会中断


咬紧牙关。如果是XML,则需要一个XML解析器来读取它。

考虑到您不想使用解析器,只想提取两个标记之间的所有字符,我建议您将XML内容提取为字符串,并使用一个简单的正则表达式匹配来提取两个标记之间的部分。

考虑到您不想使用解析器,您只想提取两个标记之间的所有字符,我建议您将xml内容提取为字符串,并使用一个简单的正则表达式匹配来提取两个标记之间的部分。

您是否关心像
&显示为一个字符还是5个字符?您是否关心您指定的标签之间是否有其他标签?如果这两个问题的答案都是“是”,那么您需要使用解析器。否则,将文件读入字符串并搜索标记。我使用字符串缓冲区将xml文件加载到中,它只能加载xml文件的一半。。。我认为字符串缓冲区应该是大的如果你的意思是,你可以简单地使用正则表达式。你的意思是我可以在将xml文件存储到StringBuffer之前使用正则表达式吗?你关心像
&显示为一个字符还是5个字符?您是否关心您指定的标签之间是否有其他标签?如果这两个问题的答案都是“是”,那么您需要使用解析器。否则,将文件读入字符串并搜索标记。我使用字符串缓冲区将xml文件加载到中,它只能加载xml文件的一半。。。我以为字符串缓冲区应该很大如果你是认真的,你可以简单地使用正则表达式。你的意思是我可以在将xml文件存储到StringBuffer之前在xml文件上使用正则表达式吗?我不想解析它,因为我想保留每一个字符,例如标记和属性等。我想到了Xpath,但从未使用过它。我不想解析它,因为我想保留每一个字符字符,例如标签和属性等我想到了Xpath,但我从未使用过它,我不想解析它。我只想要两个标签之间的所有东西。解析它将丢失我需要的大量数据。我不能说获取这个xml文件,查找并获取从那里到那里的所有信息吗?理论上这是完全可能的,但我不知道有哪种xml解析器能够以这种方式提供对未解析数据的访问。也许这表明这是一个不寻常的要求,也许这意味着你应该寻找解决问题的替代方案?我不想解析它。我只想要两个标签之间的所有东西。解析它将丢失我需要的大量数据。我不能说获取这个xml文件,查找并获取从那里到那里的所有信息吗?理论上这是完全可能的,但我不知道有哪种xml解析器能够以这种方式提供对未解析数据的访问。也许这表明这是一个不寻常的要求,也许这意味着你应该寻找解决问题的替代方案?