当前位置: 首页 > 面试题库 >

Java XML DOM:id属性有何特殊之处?

楮景明
2023-03-14
问题内容

Document该类的Javadoc 在下有以下注释getElementById

注意:除非如此定义,否则名称为“ ID”或“ id”的属性不是ID类型的

因此,我将XHTML文档读入DOM(使用Xerces 2.9.1)。

该文档中有一个普通的旧文档<p id='fribble'>

我叫getElementById("fribble"),它返回null。

我使用XPath来获取“ // * [id =’fribble’]”,一切都很好。

因此,问题是,是什么导致DocumentBuilder实际将ID属性标记为“如此定义”?


问题答案:

为了进行getElementById()调用,Document必须知道其节点的类型,并且目标节点必须是XML
ID类型,方法才能找到它。它通过关联的架构了解其元素的类型。如果未设置架构,或者未将id属性声明为XML
ID类型,getElementById()则将永远找不到它。

我的猜测是您的文档不知道p元素的id属性是XML
ID类型(是吗?)。您可以使用getChildNodes()和其他DOM遍历功能导航到DOM中的节点,并尝试调用Attr.isId()id属性来确定。

从getElementById
javadoc:

DOM实现应使用属性Attr.isId来确定属性是否为ID类型。

注意:除非如此定义,否则名称为“ ID”或“ id”的属性不是ID类型。

如果要使用DocumentBuilderXML将XML解析为DOM,请确保setSchema(schema)在调用newDocumentBuilder()之前先调用DocumentBuilderFactory,以确保从工厂获得的生成器知道元素类型。



 类似资料:
  • 本文向大家介绍CSS content属性特殊字符有哪些?相关面试题,主要包含被问及CSS content属性特殊字符有哪些?时的应答技巧和注意事项,需要的朋友参考一下 参考文章 来自CSDN

  • 当序列化特殊字符(如TAB、换行和回车)作为属性值时,我遇到了一个问题。 据此,http://www.w3.org/TR/1999/WD-xml-c14n-19991109.html#charescaping,这些应编码为

  • 我有一个集合的联系人结构如下: 因为“susan@xpto.com”上的点 如何逃脱这点? 我尝试了和但没有成功。

  • 问题内容: 故事: 当您使用解析HTML时,attribute被视为多值属性,并以特殊方式处理: 请记住,单个标签的“ class”属性可以有多个值。当您搜索与某个CSS类匹配的标签时,您将与其任何CSS类进行匹配。 另外,内建的引号用作其他树构建器类的基础,例如: 问题: 如何配置为作为通常的单值属性处理?换句话说,我不希望它专门处理并将其视为常规属性。 我尝试过的 实际上,我通过创建 自定义树

  • 在Solidity的类型系统里面有一些类型有一些在其它语言中没有的语法。其中之一就是函数类型。但依然,使用var时,可以把函数类型作为本地变量。 contract FunctionSelector { function select(bool useB, uint x) returns (uint z) { var f = a; if (useB) f = b; ret

  • 问题内容: 如果我的对象包含以%符号开头的属性,那么如何获取其值。 如果我用 我得到一个错误 我知道我不应该在变量名中使用%,但这不是我的工作,我坚持使用它。 问题答案: