如何在从 XML 文件读取内容时保留 "Character Reference Codes"(<)
How to preserve "Character Reference Codes"(<) while reading content from XML file
我使用下面的代码从 xml 文件中读取内容
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"
你不能。解析器的工作是解码这些东西并为您提供底层数据,而不管它是如何表示的。 <
代表字符 <
所以这就是解析器给你的。
使用 text-commons org.apache.commons.text.StringEscapeUtils
class 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 = <
我使用下面的代码从 xml 文件中读取内容
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"
你不能。解析器的工作是解码这些东西并为您提供底层数据,而不管它是如何表示的。 <
代表字符 <
所以这就是解析器给你的。
使用 text-commons org.apache.commons.text.StringEscapeUtils
class 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 = <