迭代判断Categories下的Category元素下是否含有ProductCategory元素。
输出不包含ProductCategory的Category的id。
allCategories.xml如下:
<Categories>
<Category>
<Name>categoryname</Name>
<ID>1</ID>
<Category>
<Name>2</Name>
<ID>5</ID>
<ProductCategory>
<Name>ProductName</Name>
<ID>6</ID>
</ProductCategory>
</Category>
<ProductCategory>
<Name>ProductName</Name>
<ID>70</ID>
</ProductCategory>
</Category>
<Category>
<Name>categoryName</Name>
<ID>2</ID>
<Category>
<Name>ProductName</Name>
<ID>5</ID>
<ProductCategory>
<Name>ProductName</Name>
<ID>6</ID>
</ProductCategory>
</Category>
</Category>
<Category>
<Name>categoryName</Name>
<ID>3</ID>
</Category>
</Categories>
java代码如下:
import java.util.List;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.input.SAXBuilder;
public class FilterUitl {
private boolean flag = false;
public boolean isContainProductCategory(Element element) {
if (element.getChildText("ProductCategory") != null) {
flag = true;
} else {
List childElementList = element.getChildren("Category");
if (childElementList != null) {
for (int i = 0; i < childElementList.size(); i++) {
if(flag==true)break;
isContainProductCategory((Element)childElementList.get(i));
}
}
}
return flag;
}
public static void main(String[] args) throws Exception {
CopyOfFilterUitl copyOfFilterUitl = new CopyOfFilterUitl();
SAXBuilder sb = new SAXBuilder();
Document doc = sb.build("allCategories.xml");
Element root = doc.getRootElement();
List<Element> list = root.getChildren("Category");
System.out.println("一级Category元素 size : ---------------" + list.size());
for (int i = 0; i < list.size(); i++) {
Element element = (Element) list.get(i);
System.out.println("一级Category元素id: " + element.getChildText("ID"));
boolean flag = copyOfFilterUitl.isContainProductCategory(element);
if (!flag) {
System.out.println("不含有ProductCategory的一级Category元素id: "
+ element.getChildText("ID"));
}
copyOfFilterUitl.flag=false;
}
}
}
分享到:
相关推荐
4. 遍历XML结构:使用迭代器遍历元素和子元素,如`for (Element child : rootElement.getChildren()) { ... }` 5. 修改XML:如果需要修改XML,可以使用`Element`对象的`setText`、`setAttribute`等方法,然后使用`...
总的来说,使用JDOM处理XML文件涉及到创建解析器,加载XML文件,获取和操作XML文档的元素及属性。通过这些步骤,我们可以方便地读取和解析XML数据,将其转化为Java对象,进行进一步的业务处理。对于开发者来说,掌握...
对于子元素,可以使用迭代器`Iterator<Element>`遍历。 ```java Element root = document.getRootElement(); String rootName = root.getName(); // 获取元素名 List<Element> childElements = root....
获取XML文档的根元素`<employees>`,然后迭代其子元素`<employee>`。对于每个员工元素,获取其属性`id`,以及`<name>`和`<position>`子元素的文本内容。将这些信息存储在HashMap中,其中键是员工ID,值是另一个...
**JDOM解析XML** JDOM,全称Java Document Object Model,是Java平台上的一个开源库,专门用于处理XML文档。它提供了一种高效且灵活的...随着版本的迭代,JDOM在性能和易用性上都有所提升,使得XML处理变得更加便捷。
总之,"Jdom解析嵌套XML<一>"这篇文章可能会深入讲解如何使用JDOM库来解析和操作具有复杂嵌套结构的XML文档,包括创建、遍历、修改XML元素和属性的方法,以及一些最佳实践和注意事项。通过学习这些内容,开发者可以...
4. **修改XML内容**:直接修改JDOM对象的属性或子元素,然后使用`org.jdom2.output.Format`和`org.jdom2.output.XMLOutputter`将更新后的文档写回文件。 5. **命名空间支持**:JDOM提供对XML命名空间的全面支持,...
下面是如何使用JDOM解析XML的示例: ```java SAXBuilder builder = new SAXBuilder(); Document doc = builder.build("example.xml"); Element root = doc.getRootElement(); // 访问和操作XML元素 ``` 这四种方法...
4. **遍历XML结构**:利用迭代器遍历元素及其子元素。 ```java for (Content content : root.getContent()) { if (content instanceof Element) { Element elem = (Element) content; // 处理元素... } } ``` ...
- 可以使用递归函数或迭代遍历XML树的各个层级。 - `Element.getChild()`和`Element.getChildren(String name)`用于获取特定名称的子元素。 4. **修改XML**: - JDOM允许在内存中修改XML结构,如添加、删除或...
3. **遍历XML**:使用迭代器或递归遍历Element的子元素。 ```java for (Object obj : root.getContent()) { if (obj instanceof Element) { Element elem = (Element) obj; // 处理元素 } } ``` 4. **修改XML*...
当XML元素代表一个列表时,可以使用JDOM遍历或修改这些元素。例如,创建一个`Element`代表列表,然后多次调用`addElement()`方法添加子元素。在解析时,可以使用`getChildren()`方法获取所有子元素,并通过迭代器...
4. **遍历和修改XML**: 使用迭代器遍历`Element`的子元素,或者通过`getChild(String name)`、`getChildren(String name)`获取特定的元素,然后进行修改。 5. **输出XML**: `Document`对象提供了`OutputFormat`和`...
若要遍历所有子元素,可以使用迭代器: ```java Iterator<Element> elements = rootElement.elementIterator(); while (elements.hasNext()) { Element childElement = elements.next(); // 处理每个子元素 } ``` ...
- **JDOM**:面向对象,易于使用,但内存消耗较大,适合小型或中型XML文档。 7. **注意事项** - JDOM 1.0不完全兼容DOM规范,这可能导致与某些DOM工具或库的互操作性问题。 - 在JDOM 1.0中,没有提供内置的支持...
使用JDOM方法读取XML文件,需要创建SAXBuilder对象,读取XML文件得到Document对象,然后使用Element对象的getChild Elements方法获取指定标签的元素列表,遍历元素列表进行数据提取。 优点:JDOM方法提供了高效的...
5. **循环处理子元素**: 通过迭代器或索引遍历 `booklist`,对每个 `<book>` 元素进行操作,例如获取属性值、修改文本内容等。 ```java for (Iterator<Element> iter = booklist.iterator(); iter.hasNext();) { ...
然而,对于非常大的XML文档,JDOM可能不如StAX或DOM4J等其他XML库高效,因为它们使用迭代器模式或分部解析来处理文档,避免一次性加载整个文档到内存。 总之,JDOM API是Java开发者处理XML的一种强大工具,它提供了...
例如,可以使用`Element.elementIterator()`迭代所有子元素,找到特定元素后,用`element.detach()`删除,或者用`element.addAttribute("name", "value")`添加或修改属性。 4. **XPath支持**: DOM4J支持XPath...
在Java开发中,XML处理是常见的任务之一,...在提供的`jdomdemo`压缩包文件中,可能包含了一个或者多个示例程序,演示了如何使用JDOM和XPath进行XML处理。你可以解压并运行这些程序,以便更直观地理解它们的工作原理。