XdmNode行号和列

时间:2016-07-12 04:11:59

标签: c# xml saxon

我需要从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获取行号和列?

1 个答案:

答案 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构造的节点,但是我们的初始测试表明它可能不起作用