Java JAXB:以字符串形式获取标记
这个问题以前可能在互联网的某个黑暗角落里得到了回答,但我甚至不知道如何形成一个有意义的谷歌查询来搜索它 因此:假设我有一个(简化的)XML文档,如下所示:Java JAXB:以字符串形式获取标记,java,xml,jaxb,Java,Xml,Jaxb,这个问题以前可能在互联网的某个黑暗角落里得到了回答,但我甚至不知道如何形成一个有意义的谷歌查询来搜索它 因此:假设我有一个(简化的)XML文档,如下所示: <root> <tag1>Value</tag1> <tag2>Word</tag2> <tag3> <something1>Foo</something1> <something2>Bar</some
<root>
<tag1>Value</tag1>
<tag2>Word</tag2>
<tag3>
<something1>Foo</something1>
<something2>Bar</something2>
<something3>Baz</something3>
</tag3>
</root>
作为字符串、标记和全部。我有一个实用方法,在这种情况下可能会对您有用。看看是否有帮助。我用您的示例制作了一个示例代码:
public static void main(String[] args){
String text= "<root><tag1>Value</tag1><tag2>Word</tag2><tag3><something1>Foo</something1><something2>Bar</something2><something3>Baz</something3></tag3></root>";
System.out.println(extractTag(text, "<tag3>"));
}
public static String extractTag(String xml, String tag) {
String value = "";
String endTag = "</" + tag.substring(1);
Pattern p = Pattern.compile(tag + "(.*?)" + endTag);
Matcher m = p.matcher(xml);
if (m.find()) {
value = m.group(1);
}
return value;
}
publicstaticvoidmain(字符串[]args){
String text=“ValueWordFooBarBaz”;
System.out.println(extractTag(文本“”);
}
公共静态字符串提取标记(字符串xml、字符串标记){
字符串值=”;
String endTag=“使用注释@xmlanyement。
我一直在寻找相同的解决方案,我希望找到一些阻止解析dom的注释,并按原样使用,但没有找到
详情见:
和
我在方法getElement()中添加了一个cheking,否则我们可能会得到IndexOutOfBoundsException
if (xml.indexOf(START_TAG) < 0) {
return "";
}
if(xml.indexOf(START_标记)<0){
返回“”;
}
对于我来说,这个解决方案的行为非常奇怪。对xml的每个标记都会调用方法getElement()。第一个调用是“Value”,第二个是“ValueWord”,等等。它会为上一个标记添加下一个标记
更新:
我注意到这种方法只适用于我们要解析为字符串的标记的一次出现。不可能正确解析下面的示例:
<root>
<parent1>
<tag1>Value</tag1>
<tag2>Word</tag2>
<tag3>
<something1>Foo</something1>
<something2>Bar</something2>
<something3>Baz</something3>
</tag3>
</parent1>
<parent2>
<tag1>Value</tag1>
<tag2>Word</tag2>
<tag3>
<something1>TheSecondFoo</something1>
<something2>TheSecondBar</something2>
<something3>TheSecondBaz</something3>
</tag3>
</parent2>
价值
单词
福
酒吧
巴兹
价值
单词
第二个
第二棒
第二个巴兹
带有父标记“parent2”的“tag3”将包含来自第一个标记(Foo、Bar、Baz)的参数,而不是(secondfoo、secondbar、secondbaz)
如有任何建议,我们将不胜感激。
谢谢。在这种情况下,你没有拆封。获取完整的XML,并使用正则表达式或自定义解析来获取
的所有内容。我在问了这个问题后偶然发现了那篇博文,并最终使用了该解决方案。考虑到其他回答完全失败,你得到了绿色的复选标记。我想它有一些问题与此有关的是:
<root>
<parent1>
<tag1>Value</tag1>
<tag2>Word</tag2>
<tag3>
<something1>Foo</something1>
<something2>Bar</something2>
<something3>Baz</something3>
</tag3>
</parent1>
<parent2>
<tag1>Value</tag1>
<tag2>Word</tag2>
<tag3>
<something1>TheSecondFoo</something1>
<something2>TheSecondBar</something2>
<something3>TheSecondBaz</something3>
</tag3>
</parent2>