【发布时间】:2013-11-06 19:41:10
【问题描述】:
我有一个数组列表,其中包含以下格式的标题和全名
Dr.|ricardo bettati
Prof. Dr.-Ing.|Helmut sperling
miss|angela link
首先我将内容与|分开。我将获得标题和全名。然后我用空格分割全名得到firstname和familyname.
现在我有 3 个字符串
字符串标题\包含上面列表中的标题 字符串名; 字符串姓氏;
下一个任务是我用上面的字符串firstname和familyname检查现有xml的文本内容。这是现有的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 内容与上述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()' 来获取孩子。这将为您提供“节点”的子节点列表,然后检查您想要的任何内容。
-
有两个名字或中间名首字母的人呢?
-
好问题,但到目前为止我没有名字有 2 个名字。但我有中间名字的名字。如果我能够解决这个问题,我将能够处理这些名字有中间名的