У меня возникла проблема с тем, как поместить извлеченные элементы XML в новую строку?потому что я получаю, что элементы отображаются в одной строке.
это XML-файл.
<?xml version="1.0" encoding="UTF-8"?>
<PayrollRequest>
<PayrollCost>
<PayrollID>123</PayrollID>
<BatchID>
<No>7770</No>
<No>8888</No>
<No>1234</No>
<No>9999</No>
</BatchID>
<CompanyId>
<CompanyId>001</CompanyId>
<CompanyDescription>KukuKambing</CompanyDescription>
</CompanyId>
<CategoryCost>
<GrossPay>60000</GrossPay>
</CategoryCost>
</PayrollCost>
</PayrollRequest>
и это код в Java:
import javax.xml.namespace.QName;
import java.util.Properties;
import com.ddtek.xquery3.XQConnection;
import com.ddtek.xquery3.XQException;
import com.ddtek.xquery3.XQExpression;
import com.ddtek.xquery3.XQItemType;
import com.ddtek.xquery3.XQSequence;
import com.ddtek.xquery3.xqj.DDXQDataSource;
public class XQueryTest4 {
// Filename for XML document to query
private String filename;
// Data Source for querying
private DDXQDataSource dataSource;
// Connection for querying
private XQConnection conn;
public XQueryTest4(String filename) {
this.filename = "SamplePayroll2.xml";
}
public void init() throws XQException {
dataSource = new DDXQDataSource();
conn = dataSource.getConnection();
}
public String query(String queryString) throws XQException {
XQExpression expression = conn.createExpression();
expression.bindString(new QName("docName"), filename,
conn.createAtomicType(XQItemType.XQBASETYPE_STRING));
XQSequence results = expression.executeQuery(queryString);
return results.getSequenceAsString(new Properties());
}
public static void main(String[] args) {
try {
XQueryTest4 tester = new XQueryTest4("SamplePayroll2.xml");
tester.init();
final String sep = System.getProperty("line.separator");
String queryString =
"declare variable $docName as xs:string external;" + sep +
" for $PayrollRequest in doc($docName)/PayrollRequest " +
" return " +
"$PayrollRequest/PayrollCost/BatchID/No/text()";
System.out.println(tester.query(queryString));
} catch (Exception e) {
e.printStackTrace(System.err);
System.err.println(e.getMessage());
}
}
}
вывод, который я получаю, находится в одной строке: 7770888812349999
но то, что я хочу, это должно быть так:
7770
8888
1234
9999
Я пытался использовать \ n \г, но, кажется, не работает вообще .. какие-либо решения для моих проблем?спасибо!