Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.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节点识别包含许多xml文件以及其他文本的文本文件中的xml?_Java_Xml - Fatal编程技术网

如何使用Java中的xml节点识别包含许多xml文件以及其他文本的文本文件中的xml?

如何使用Java中的xml节点识别包含许多xml文件以及其他文本的文本文件中的xml?,java,xml,Java,Xml,我想读取整个文本文件,并根据搜索输入在本地驱动器中获取和保存整个第二个XML 夜雨 文本文件内容: <?xml version="1.0"?> <catalog> <book id="bk101"> <author>Gambardella, Matthew</author> <title>XML Developer's Guide</title> <genre>

我想读取整个文本文件,并根据搜索输入在本地驱动器中获取和保存整个第二个XML

夜雨

文本文件内容:

<?xml version="1.0"?>
<catalog>
   <book id="bk101">
      <author>Gambardella, Matthew</author>
      <title>XML Developer's Guide</title>
      <genre>Computer</genre>
      <price>44.95</price>
      <publish_date>2000-10-01</publish_date>
      <description>An in-depth look at creating applications 
      with XML.</description>
   </book>
</catalog>
controllercmds.statusupdate
ExtnClientExternalSrcProcess="9"
<catalog>
   <book id="bk102">
      <author>Ralls, Kim</author>
      <title>Midnight Rain</title>
      <genre>Fantasy</genre>
      <price>5.95</price>
      <publish_date>2000-12-16</publish_date>
      <description>A former architect battles corporate zombies, 
      an evil sorceress, and her own childhood to become queen 
      of the world.</description>
   </book>
</catalog>'

马修·甘巴德拉
XML开发人员指南
电脑类
44.95
2000-10-01
深入了解如何创建应用程序
使用XML。
controllercmds.statusupdate
ExtnClientExternalSrcProcess=“9”
拉尔斯,金
夜雨
幻想
5.95
2000-12-16
一位前建筑师与企业僵尸搏斗,
一个邪恶的女巫,和她自己的童年成为女王
世界的一部分。
'
我的输出应该是:

<catalog>
   <book id="bk102">
      <author>Ralls, Kim</author>
      <title>Midnight Rain</title>
      <genre>Fantasy</genre>
      <price>5.95</price>
      <publish_date>2000-12-16</publish_date>
      <description>A former architect battles corporate zombies, 
      an evil sorceress, and her own childhood to become queen 
      of the world.</description>
   </book>
</catalog>

拉尔斯,金
夜雨
幻想
5.95
2000-12-16
一位前建筑师与企业僵尸搏斗,
一个邪恶的女巫,和她自己的童年成为女王
世界的一部分。

这可行吗?有人能帮我一下吗?

我想你应该提到你正在使用的编程语言,这样人们就可以用代码为你提供解决方案,因为现在我认为正则表达式只能是解决方案,你必须知道你的代码应该寻找的根标记是什么。就像上面我看到的是根标签。我将设法在几个小时内完成代码解决方案

以下代码适用于JDK 6,也适用于更高版本

String xml = "<?xml version=\"1.0\"?>" +
"<catalog>" +
"<book id=\"bk101\">" +
   "<author>Gambardella, Matthew</author>" +
   "<title>XML Developer's Guide</title>" +
   "<genre>Computer</genre>" +
   "<price>44.95</price>" +
   "<publish_date>2000-10-01</publish_date>" +
   "<description>An in-depth look at creating applications" + 
   "with XML.</description>" +
"</book>" +
"</catalog>" +
"controllercmds.statusupdate" +
"ExtnClientExternalSrcProcess=\"9\"" +
"<catalog>" +
"<book id=\"bk102\">" +
   "<author>Ralls, Kim</author>" +
   "<title>Midnight Rain</title>" +
   "<genre>Fantasy</genre>" +
   "<price>5.95</price>" +
   "<publish_date>2000-12-16</publish_date>" +
   "<description>A former architect battles corporate zombies," + 
   "an evil sorceress, and her own childhood to become queen " +
   "of the world.</description>" +
"</book>" +
"</catalog>";

String regex = "(\\<catalog\\>.*?\\</catalog\\>)";

java.util.regex.Pattern pattern = java.util.regex.Pattern.compile(regex);
java.util.regex.Matcher matcher = pattern.matcher(xml); 

while(matcher.find()) {

    System.out.println("Groups: " + matcher.group(1));
}

System.out.println("DONE");
String xml=“”+
"" +
"" +

在一般情况下,这将是困难的。但是如果您知道输入符合某些特定的约束,这可能会容易得多。例如,如果您知道XML片段将以
开头,以
结尾,并且如果您对这两个字符串在任何时候都不会出现有很高的信心。”否则,使用正则表达式提取XML片段应该不会太困难。因此,我认为答案在很大程度上取决于您对约束的了解,以及您准备“意外”(或恶意)承担开始/结束标记的风险出现在意外的地方。

问题不清楚..您正在哪个编程中阅读XML内容>请粘贴您尝试过的java代码..我尝试使用缓冲读取器BufferedReader br=new BufferedReader(new InputStreamReader(sftp.get(file.getFilename());尝试{while((line=br.readLine())!=null){if(line.contains()感谢您的回复Mubashar。我正在尝试使用Java语言实现这一点。非常感谢您的时间Mubashar,但我还需要在文本文件中搜索约18-20 MB的xml。在这里,我看到您正在直接传递xml。这可能吗?使用此解决方案,您可以读取文件并将内容传递给此函数但是,20 MB有点大,所以可以分块进行。但是,您必须确保每个块至少包含一个有效的xml组。
Groups: <catalog><book id="bk101"><author>Gambardella, Matthew</author><title>XML Developer's Guide</title><genre>Computer</genre><price>44.95</price><publish_date>2000-10-01</publish_date><description>An in-depth look at creating applicationswith XML.</description></book></catalog>
Groups: <catalog><book id="bk102"><author>Ralls, Kim</author><title>Midnight Rain</title><genre>Fantasy</genre><price>5.95</price><publish_date>2000-12-16</publish_date><description>A former architect battles corporate zombies,an evil sorceress, and her own childhood to become queen of the world.</description></book></catalog>
DONE