有没有方法可以检查文档中是否存在标记名?(多姆杰森)

2024-10-01 00:25:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我的代码是:

'''
Created on 27/05/2015
@author: Rederick Deathwill
'''

from java.io import File
from java.io import IOException
from javax.xml.parsers import DocumentBuilder
from javax.xml.parsers import DocumentBuilderFactory
from org.w3c.dom import Document
from org.w3c.dom import Element
from org.w3c.dom import Node
from org.w3c.dom import NodeList
from org.xml.sax import SAXException

class JXLLoader():

    def __init__(self, fileName):  
        self.fileName = fileName
        self.file = File(self.fileName)
        self.dbFactory = DocumentBuilderFactory.newInstance()
        self.dBuilder = self.dbFactory.newDocumentBuilder()
        self.doc = self.dBuilder.parse(self.file)
        self.doc.getDocumentElement().normalize()

class JXLReader(JXLLoader):

    def __init__(self, fileName):
        JXLLoader.__init__(self, fileName)
        self.mainNodeList = self.doc.getElementsByTagName("main") # Here <<

if __name__ == '__main__':

    jxl = JXLReader("x.xml")
    print(jxl.mainNodeList)

    for i in range(jxl.mainNodeList.getLength()):
        node = jxl.mainNodeList.item(i)
        if (node.getNodeType() == Node.ELEMENT_NODE):
            e = node 
            print(e.getElementsByTagName("value").item(0).getTextContent())  

有没有办法检查文档对象中是否存在“标记名”?我不知道如何检查标签“main”是否不存在。例如:

打印的结果(jxl.mainNodeList)是:

^{pr2}$

但是,如果我使用不存在的标记执行此操作:

self.mainNodeList = self.doc.getElementsByTagName("maix")

当我打印出来的结果是一个地址/对象,就像那个地址/对象一样(而不是null/None或其他)。关键是,我如何才能知道“<;main>;<;/main>;”是否真的在文档中,以便在没有的情况下提出异常?在

以下是XML:

<?xml version="1.0" encoding="UTF-8"?>
<main>
    <value>100</value>
    <name>Rederick Deathwill</name>
</main>

编辑:我还检查了docs。没有像“hasTagName()”这样的方法。在


Tags: fromorgimportselfdocinitmainxml
1条回答
网友
1楼 · 发布于 2024-10-01 00:25:46

检查getElementsByTagName调用的返回值的长度。在

如果self.mainNodeList.getLength() == 0,那么getElementsByTagName调用找不到任何内容。在

相关问题 更多 >