java - 获取 xml 中处理指令标记内的数据

标签 java xml dom

这是我的代码:

void validate(String fileLocation){
    try{
        DocumentBuilderFactory factory= DocumentBuilderFactory.newInstance();
        DocumentBuilder builder = factory.newDocumentBuilder();
        Document document = builder.parse(new File(fileLocation));
        String[] pageContent=new String[100];
        for (int i = 0; i < pageContent.length; i++) {
            String currentPageContent=  document.getElementsByTagName("?PG").item(i).getTextContent();
            System.out.println("the Current Page content is "+currentPageContent);
            pageContent[i]=currentPageContent;
        }
    }catch(Exception e){
        e.printStackTrace();
    }
}

我有几个标记,如 < ?PG 1 ?> 、 < ?PG 2 ?>、< ?PG 3 ?> 表示页码,我如何从页面标记中获取数据。

最佳答案

  1. 您可以使用递归来遍历 xml,而无需困惑的嵌套 for 循环。
  2. 您可以将节点类型与 PROCESSING_INSTRUCTION_NODE 进行比较并提取其内容。

XML 示例:

<?xml version="1.0" encoding="UTF-8" ?>
<test>
  <ID>Test1</ID>
  <TestType name="abc">
     <AddressRange start="0x00000000" end="0x0018ffff" />
  </TestType >
  <TestType name="RAM">
     <AddressRange start="0x00400000" end="0x00407fff" />
  </TestType >
  <?PITarget PIContent?>
  <?PISource PISome?>
</test>

代码:

public static void main(String[] args) throws ParserConfigurationException,
            SAXException, IOException {
        FileInputStream path = new FileInputStream("text.xml");
        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
        DocumentBuilder builder = factory.newDocumentBuilder();
        Document document = builder.parse(path);
        System.out.println();
        traverse(document.getDocumentElement());

    }

    public static void traverse(Node node) {
        NodeList list = node.getChildNodes();
        for (int i = 0; i < list.getLength(); i++) {
            Node currentNode = list.item(i);
            traverse(currentNode);

        }

        if (node.getNodeType() == Node.PROCESSING_INSTRUCTION_NODE) {
            System.out.println("This -> " + node.getTextContent());
        }

    }

给予,

This -> PIContent
This -> PISome

关于java - 获取 xml 中处理指令标记内的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22062587/

相关文章:

java - Android:用 fragment View 替换 Activity View

javascript - 更改div的innerHTML会清除整个内容

javascript - 如何消除渲染后 "flicker"?

java方法检索

java - 如何在类之间交换信息

java - xpath 第一个可用值

java - 在 POJO 上包装 XPath 语言/接口(interface)的最佳方法是什么?

java - jenkins和android名称归档文件名

java - 容器管理的事务

jquery - 如何将 .ajax() responseText 设置为变量