我需要从XdmNode获取源文档中的行号和列。我知道我可以这样做:
<?php
if(isset($_REQUEST['address'])) {
$_REQUEST['address'] = htmlentities($_REQUEST['address']);
}
if(isset($_GET['address'])) {
$_GET['address'] = htmlentities($_GET['address']);
}
if(isset($_POST['address'])) {
$_POST['address'] = htmlentities($_POST['address']);
}
if(isset($address)) {
$address = htmlentities($address);
}
但是node.Unwrap()是net.sf.saxon.tree.tiny.TinyElementImpl类型的对象,无法将其转换为VirtualNode,可能是因为我没有使用DocumentBuilder.Wrap(XmlDocument)加载文档但是DocumentBuilder.Build(XmlReader)?
使用XmlReader的方法比XmlDocument版本快。如何从XdmNode获取行号和列?
答案 0 :(得分:0)
加入O'Neil的回应:
(a).NET上的XdmNode不具有LineNumber和ColumnNumber属性,与Java等价物不同。我们将添加这些。但是,如果行号信息可用,这些属性当然只返回任何有用的东西。
(b)如果没有这些属性,您可以使用XdmNode.Implementation.getLineNumber()和XdmNode.Implementation.getColumnNumber()。
(c)除非在DocumentBuilder上设置了IsLineNumbering属性,否则不会保留行/列信息。
(d)如果您使用默认配置选项(特别是,如果使用内置的Xerces解析器解析),则使用Uri或Stream或TextReader构建文档时,行/列编号应该有效。 XML文档)
(e)当使用XmlReader解析文档时,Saxon代码试图从MS解析器获取行/列信息到Saxon构造的节点,但是我们的初始测试表明它可能不起作用