我有一个包含以下列格式比较XML元素的文本内容和子元素在Java中
Dr.|ricardo bettati
Prof. Dr.-Ing.|Helmut sperling
miss|angela link
首先,我很分裂与|
。我的内容标题和全名的ArrayList会获得标题和全名。然后我分裂fullnames与空间得到firstname
和familyname.
现在我有3串
其中包含从上述列表 字符串姓标题字符串标题\; 字符串familynames;
下一个任务是,我有检查存在XML的文本内容与上面的字符串firstname
和familyname
。这里是存在XML
<person>
<name>
<firstname>Jean-Luc</firstname>
<familyname>DeLorme</familyname>
</name>
</person>
<person>
<name>
<firstname>Dave</firstname>
<familyname>Sperling</familyname>
</name>
</person>
<person>
<name>
<firstname>Helmut</firstname>
<familyname>sperling</familyname>
</name>
</person>
如果firstname
和familyname
contets与上面的文字内容相匹配XML元素<firstname>
,<familyname>
然后我必须创建一个名为<title>
的元素,并在我的列表中添加相应的标题。我的XML应该看起来像下面这样:
<person>
<name>
<firstname>Jean-Luc</firstname>
<familyname>DeLorme</familyname>
</name>
</person>
<person>
<name>
<firstname>Dave</firstname>
<familyname>Sperling</familyname>
</name>
</person>
<person>
<name>
**<title>Prof. Dr.-Ing.>/title>**
<firstname>Helmut</firstname>
<familyname>sperling</familyname>
</name>
</person>
我试图用下面的代码
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
dbf.setValidating(false);
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.parse(new FileInputStream(new File("Final-Results.xml")));
Element element = doc.getDocumentElement();
NodeList list = doc.getElementsByTagName("person");
for (int i=0;i<titles.size();i++) { //Title is my arraylist
String names = (String) titles.get(i);
String[] content=names.split("\\|");
String title=content[0];
String[] fullname=content[1].split("\\s+");
String firstname=fullname[0];
String familyname=fullname[1];
for (int n = 0; n < list.getLength(); n++) {
Node node = list.item(n);
if ("firstname".equals(node.getNodeName()) && node.getTextContent().equals(firstname)) {
System.out.println("haii");
}
}
}
但我得怎么回事儿和检查的文本内容,并建立在特定地点的节点?
可以使用 'node.getChildNodes()' 来得到孩子。这会给你一个'节点'的子节点列表,然后检查你想要的任何东西。 – luanjot
那些有两个名字或中间名首字母的人呢? – tom
好问题,但截至目前我没有名字,有2个名字。但我有名字有中间intial.If我能够解决这个问题,我将能够处理名称中间名 – user2814979