如何解析XML文件Java

桑德拉

我正在尝试解析此XML文件以获取name例如,“ 2b管理非营利组织”。

我尝试使用DOM和xpath,但失败了。

我想遍历此xml并提取每首歌曲的名称。这是我的xpath示例。

 XPath xPath = XPathFactory.newInstance().newXPath();
        NodeList nList = (NodeList)xPath.evaluate("/plist/dict/dict/dict/string[@rollno='artist']", root, XPathConstants.NODESET);
        for (int i = 0; i < nList.getLength(); ++i) {
            Element e = (Element) nList.item(i);
            String value = e.getFirstChild().getNodeValue();
        //   System.out.print("string:" + value+"");
            names_and_numbers.add( value); 
               System.out.print(names_and_numbers);

        }

谢谢

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict  rollno="393">
    <key>Major Version</key><integer>1</integer>
    <key>Minor Version</key><integer>1</integer>
    <key>Application Version</key><string>8.2.1</string>
    <key>Features</key><integer>5</integer>
    <key>Show Content Ratings</key><true/>
    <key>Music Folder</key><string>file://localhost/C:/WINNT/Profiles/A062616/My%20Documents/My%20Music/iTunes/iTunes%20Music/</string>
    <key>Library Persistent ID</key><string>542CEAB7C8BAE946</string>
    <key>Tracks</key>
    <dict>
        <key>124</key>
        <dict>
            <key>Track ID</key><integer>124</integer>
            <key>Name</key><string>2b Managing the Non-Profit Organization</string>
            <key>Artist</key><string>Peter Drucker</string>
            <key>Album</key><string>Managing the Non-Profit Organization</string>
            <key>Genre</key><string>AudioBook</string>
            <key>Kind</key><string>MPEG audio file</string>
            <key>Size</key><integer>15096591</integer>
            <key>Total Time</key><integer>2680320</integer>
            <key>Date Modified</key><date>2008-12-17T18:37:02Z</date>
            <key>Date Added</key><date>2008-12-17T17:36:38Z</date>
            <key>Bit Rate</key><integer>45</integer>
            <key>Sample Rate</key><integer>22050</integer>
            <key>Persistent ID</key><string>21B422A222B952AD</string>
            <key>Track Type</key><string>File</string>
            <key>Location</key><string>file://localhost/C:/WINNT/Profiles/A062616/My%20Documents/My%20Music/iTunes/iTunes%20Music/Peter%20Drucker/Managing%20the%20Non-Profit%20Organization/2b%20Managing%20the%20Non-Profit%20Organizat.mp3</string>
            <key>File Folder Count</key><integer>4</integer>
            <key>Library Folder Count</key><integer>1</integer>
        </dict>
        <key>126</key>
        <dict>
            <key>Track ID</key><integer>126</integer>
            <key>Name</key><string>1a Managing the Non-Profit Organization</string>
            <key>Artist</key><string>Peter Drucker</string>
            <key>Album</key><string>Managing the Non-Profit Organization</string>
            <key>Genre</key><string>AudioBook</string>
            <key>Kind</key><string>MPEG audio file</string>
            <key>Size</key><integer>16393005</integer>
            <key>Total Time</key><integer>2683402</integer>
            <key>Date Modified</key><date>2008-12-17T18:37:02Z</date>
            <key>Date Added</key><date>2008-12-17T17:36:38Z</date>
            <key>Bit Rate</key><integer>48</integer>
            <key>Sample Rate</key><integer>22050</integer>
            <key>Persistent ID</key><string>21B422A222B952AF</string>
            <key>Track Type</key><string>File</string>
            <key>Location</key><string>file://localhost/C:/WINNT/Profiles/A062616/My%20Documents/My%20Music/iTunes/iTunes%20Music/Peter%20Drucker/Managing%20the%20Non-Profit%20Organization/1a%20Managing%20the%20Non-Profit%20Organizat.mp3</string>
            <key>File Folder Count</key><integer>4</integer>
            <key>Library Folder Count</key><integer>1</integer>
        </dict>
        <key>128</key>
        <dict>
            <key>Track ID</key><integer>128</integer>
            <key>Name</key><string>1b Managing the Non-Profit Organization</string>
            <key>Artist</key><string>Peter Drucker</string>
            <key>Album</key><string>Managing the Non-Profit Organization</string>
            <key>Genre</key><string>AudioBook</string>
            <key>Kind</key><string>MPEG audio file</string>
            <key>Size</key><integer>16412357</integer>
            <key>Total Time</key><integer>2672195</integer>
            <key>Date Modified</key><date>2008-12-17T18:37:02Z</date>
            <key>Date Added</key><date>2008-12-17T17:36:38Z</date>
            <key>Bit Rate</key><integer>49</integer>
            <key>Sample Rate</key><integer>22050</integer>
            <key>Persistent ID</key><string>21B422A222B952B0</string>
            <key>Track Type</key><string>File</string>
            <key>Location</key><string>file://localhost/C:/WINNT/Profiles/A062616/My%20Documents/My%20Music/iTunes/iTunes%20Music/Peter%20Drucker/Managing%20the%20Non-Profit%20Organization/1b%20Managing%20the%20Non-Profit%20Organizat.mp3</string>
            <key>File Folder Count</key><integer>4</integer>
            <key>Library Folder Count</key><integer>1</integer>
        </dict> 
      </dict>
   </dict>
</plist>
一月

尝试使用以下XPath表达式:

/plist/dict/dict/dict/key[text()='Name']/following::string[1]

这将选择带有文本Name的键之后的第一个字符串

public static void main(String[] args) {
  try {
    InputSource root = new InputSource(XMLParse.class.getResourceAsStream("/data.xml"));
      XPath xPath = XPathFactory.newInstance().newXPath();
      NodeList nList = (NodeList)xPath.evaluate("/plist/dict/dict/dict/key[text()='Name']/following::string[1]", root, XPathConstants.NODESET);
      for (int i = 0; i < nList.getLength(); ++i) {
          Element e = (Element) nList.item(i);
          String value = e.getFirstChild().getNodeValue();

          System.out.println("string:" + value+"");

      }
 }  catch (XPathExpressionException e) {

    e.printStackTrace();
 } catch (DOMException e) {

    e.printStackTrace();
 }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何解析大型XML文件

来自分类Dev

如何解析JUnit结果xml文件并在java代码中获取测试用例?

来自分类Dev

如何解析非常规XML文件

来自分类Dev

如何解析可能格式错误的整个XML文件?

来自分类Dev

如何解析xml文件以获取字段?

来自分类Dev

如何解析非常规XML文件

来自分类Dev

如何解析巨大的XML文件而不耗尽内存

来自分类Dev

如何解析复杂的xml

来自分类Dev

如何解析复杂的xml

来自分类Dev

如何解析这段XML?

来自分类Dev

如何解析远程文件?

来自分类常见问题

如何解析YAML文件

来自分类Dev

如何解析JSON文件?

来自分类Dev

如何解析WARC文件?

来自分类Dev

如何解析 Typoscript 文件?

来自分类Dev

如何解析给定的文件?

来自分类Dev

Java:如何解析结构化TXT文件?

来自分类Dev

Java:如何解析结构化TXT文件?

来自分类Dev

Java:如何解析 csv 文件以比较列中的数据

来自分类Dev

如何解析一个文件夹中的许多XML文件(使用CDATA)并使用Java批处理导入到MySQL?

来自分类Dev

如何解析XML以获得所需的结果

来自分类Dev

Perl:如何解析无效的XML文档?

来自分类Dev

如何解析从URL返回的xml?

来自分类Dev

如何解析在PHP的肥皂XML?

来自分类Dev

如何解析XML子节点

来自分类Dev

如何解析Xml包装json

来自分类Dev

如何解析php中的xml?

来自分类Dev

如何解析从网址返回的xml?

来自分类Dev

如何解析XML子节点