// 'xmldocument$'(['xmldecl$'([version=1.0,encoding=ISO-8859-1])], ...]), []) static Encoding GetEncodingFromTerm(BaseTerm t, Encoding defEnc) { if (t.Arity == 0 || (t = t.Arg(0)).FunctorToString != XMLDECL) { return(defEnc); } if (!((t = t.Arg(0)) is ListTerm)) // attributes last, find encoding { return(defEnc); } foreach (BaseTerm b in (ListTerm)t) { if (!(b is OperatorTerm) || !((OperatorTerm)b).HasBinaryOperator("=")) { return(defEnc); } OperatorTerm ot = (OperatorTerm)b; if (ot.Arg(0).FunctorToString == "encoding") { return(GetEncodingFromString(ot.Arg(1).FunctorToString)); } } return(defEnc); }