有没有办法检查文档中是否存在标签名称? (DOM - 杰森)
Is there a way to check if a tag name exists in a Document? (DOM - Jython)
这是我的代码:
'''
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())
有没有办法检查 "TagName" 是否存在于 Document 对象中?我不知道如何检查标签 "main" 是否不存在。例如:
那个 print(jxl.mainNodeList) 的结果是:
com.sun.org.apache.xerces.internal.dom.DeepNodeListImpl@58a63629
然而,如果我使用不存在的标签执行此操作:
self.mainNodeList = self.doc.getElementsByTagName("maix")
我打印的结果是 address/object 就像那个一样(而不是 null / None 或其他东西)。关键是,我如何知道“< main > > / main >”是否真的在文档中,以便我可以在它不在的情况下引发异常?
这是XML:
<?xml version="1.0" encoding="UTF-8"?>
<main>
<value>100</value>
<name>Rederick Deathwill</name>
</main>
编辑:另外,我检查了 docs。没有像 "hasTagName()".
这样的方法
检查 getElementsByTagName
调用的 return 值的长度。
如果 self.mainNodeList.getLength() == 0
那么 getElementsByTagName
调用什么也没找到。
这是我的代码:
'''
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())
有没有办法检查 "TagName" 是否存在于 Document 对象中?我不知道如何检查标签 "main" 是否不存在。例如:
那个 print(jxl.mainNodeList) 的结果是:
com.sun.org.apache.xerces.internal.dom.DeepNodeListImpl@58a63629
然而,如果我使用不存在的标签执行此操作:
self.mainNodeList = self.doc.getElementsByTagName("maix")
我打印的结果是 address/object 就像那个一样(而不是 null / None 或其他东西)。关键是,我如何知道“< main > > / main >”是否真的在文档中,以便我可以在它不在的情况下引发异常?
这是XML:
<?xml version="1.0" encoding="UTF-8"?>
<main>
<value>100</value>
<name>Rederick Deathwill</name>
</main>
编辑:另外,我检查了 docs。没有像 "hasTagName()".
这样的方法检查 getElementsByTagName
调用的 return 值的长度。
如果 self.mainNodeList.getLength() == 0
那么 getElementsByTagName
调用什么也没找到。