繁体   English   中英

使用 StaX 如何读取带有 & 字符的 UTF-8 数据?

[英]Using StaX how to read UTF-8 data with & characters?

如何使用 Stax 读取标签文本中的所有字符,甚至是& ? 我对传入的 XML 文件没有影响。

一个示例 XML 文件是:

<?xml version="1.0" encoding="UTF-8"?>
<Employees>
    <Employee id="1">
        <age>22</age>
        <name>MyName &amp; Team 01/46</name>
        <gender>Female</gender>
        <role>Java Developer</role>
    </Employee>
    ....
</Employees>

通过多次尝试,仅从名称中读取“MyName”部分。

尝试1:

Path gpxPath = Paths.get( path);
XMLInputFactory xmlInputFactory = XMLInputFactory.newInstance();
XMLStreamReader reader;
reader = xmlInputFactory.createXMLStreamReader( new FileInputStream(gpxPath.toFile()), "UTF-8");
... 
String name = reader.getText();

尝试2:

XMLInputFactory xmlInputFactory = XMLInputFactory.newInstance();
try {
    XMLStreamReader xmlStreamReader = xmlInputFactory.createXMLStreamReader( 
          new DataInputStream(new FileInputStream(fileName)), "UTF-8");
    ... 
    name = new String( xmlStreamReader.getTextCharacters());
    // or ... 
    name = xmlStreamReader.getText();

怎么读全名? 所以,“我的名字和团队 01/46”。

解决方案是在 Xml 工厂上设置一个属性:

XMLInputFactory xmlInputFactory = XMLInputFactory.newInstance();
xmlInputFactory.setProperty( IS_COALESCING, true);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM