SWI-Prolog xml_write 到变量
SWI-Prolog xml_write to variable
如何 xml_write
到变量而不是流?
我试过这个:
current_output(O),
with_output_to(string(X),
xml_write(O,[element(table, [style="width:50%"],
[element(tr, [span = 2],
[element(td, [], ['First name']),
element(td, [], ['Last name'])])])],
[header(false)])).
但是上面的仍然输出到输出流,而且,没有与任何东西统一X
。这是输出:
<table style="width:50%">
<tr span="2">
<td>First name</td>
<td>Last name</td>
</tr>
</table>
O = <stream>(6D342F30),
X = "".
您使用的 xml_write/3 具有签名:
xml_write(+Stream, +Term, +Options)
为了有效地写入流。但是,由于您更希望将结果 XML 与变量统一,请查看 xml_write/2 ,它看起来像:
xml_write(+Data, +Options) is det
在您的代码中使用它,它可能类似于:
xml_output(X) :-
table(Out),
with_output_to(string(X),
xml_write(Out,[header(false)])
),
writeln(X).
table(R) :-
R = [element(table, [style="width:50%"],
[element(tr, [span = 2],
[element(td, [], ['First name']),
element(td, [], ['Last name'])])])].
示例查询:
?- xml_output(R).
<table style="width:50%">
<tr span="2">
<td>First name</td>
<td>Last name</td>
</tr>
</table>
R = "<table style=\"width:50%\">\n <tr span=\"2\">\n <td>First name</td>\n <td>Last name</td>\n </tr>\n</table>".
如何 xml_write
到变量而不是流?
我试过这个:
current_output(O),
with_output_to(string(X),
xml_write(O,[element(table, [style="width:50%"],
[element(tr, [span = 2],
[element(td, [], ['First name']),
element(td, [], ['Last name'])])])],
[header(false)])).
但是上面的仍然输出到输出流,而且,没有与任何东西统一X
。这是输出:
<table style="width:50%">
<tr span="2">
<td>First name</td>
<td>Last name</td>
</tr>
</table>
O = <stream>(6D342F30),
X = "".
您使用的 xml_write/3 具有签名:
xml_write(+Stream, +Term, +Options)
为了有效地写入流。但是,由于您更希望将结果 XML 与变量统一,请查看 xml_write/2 ,它看起来像:
xml_write(+Data, +Options) is det
在您的代码中使用它,它可能类似于:
xml_output(X) :-
table(Out),
with_output_to(string(X),
xml_write(Out,[header(false)])
),
writeln(X).
table(R) :-
R = [element(table, [style="width:50%"],
[element(tr, [span = 2],
[element(td, [], ['First name']),
element(td, [], ['Last name'])])])].
示例查询:
?- xml_output(R).
<table style="width:50%">
<tr span="2">
<td>First name</td>
<td>Last name</td>
</tr>
</table>
R = "<table style=\"width:50%\">\n <tr span=\"2\">\n <td>First name</td>\n <td>Last name</td>\n </tr>\n</table>".