我已使用以下代码从xml文件读取内容
(?DS[ \t]*)([+\-][ \t]*\d{1,2}\.\d{2})
我的输入文件如下所示:
public static void toXSD() {
SAXBuilder saxBuilder = new SAXBuilder();
Document document;
try {
document = saxBuilder.build(new File("D:\\Users\\schintha\\Desktop\\Work\\\test_files\\SUMMARY_11.xml"));
for (Element element : document.getRootElement().getChildren()) {
System.out.println("Name = " + element.getName());
System.out.println("Value = " + element.getValue());
System.out.println("Text = " + element.getText());
}
} catch (JDOMException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();}}
输出为
<?xml version="1.0" encoding="UTF-8"?>
<temp>
<position><</position>
</temp>
在这方面,我要求让我知道如何按原样检索Name = position
Value = <
Text = <
而不是“ <”。因为它不是标记的开始,而是标记“ position”的值
答案 0 :(得分:1)
不能。解析器的工作是解码这些东西并为您提供基础数据,而不管其表示方式如何。 <
代表字符<
,这就是解析器为您提供的内容。
答案 1 :(得分:0)
使用文本公用org.apache.commons.text.StringEscapeUtils
类escapeXml10
方法,我们可以在xml标记中转义字符参考代码-
StringEscapeUtils.escapeXml10(element.getValue())
完整示例如下所示
public static void toXSD() {
SAXBuilder saxBuilder = new SAXBuilder();
Document document;
try {
document = saxBuilder.build(new File("D:\\Users\\schintha\\Desktop\\Work\\\test_files\\SUMMARY_11.xml"));
for (Element element : document.getRootElement().getChildren()) {
System.out.println("Name = " + element.getName());
System.out.println("Value = " + StringEscapeUtils.escapeXml10(element.getValue()));
}
} catch (JDOMException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();}}
有问题的输入文件:
<?xml version="1.0" encoding="UTF-8"?>
<temp>
<position><</position>
</temp>
获得的预期输出为(未解析的位置标记的值)
Name = position
Value = <