- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试从 XML 文件中获取信息,并使用该信息来创建对象。问题在于 XML 文件中的每个标签都是 dict、key 或数据类型标签(如整数和字符串)。使用这些模糊的标签名称,我发现很难指定我想要的数据。
我意识到我并不是以最好的方式问这个问题,但我是一个完全的初学者,不知道从哪里开始,任何帮助将不胜感激。
这是我试图从中解析的文件:
<?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>
<key>Major Version</key><integer>1</integer>
<key>Minor Version</key><integer>1</integer>
<key>Date</key><date>2012-10-27T17:24:27Z</date>
<key>Application Version</key><string>10.7</string>
<key>Features</key><integer>5</integer>
<key>Show Content Ratings</key><true/>
<key>Music Folder</key><string>file://localhost/C:/Users/andrea/Music/iTunes/iTunes%20Media/</string>
<key>Library Persistent ID</key><string>69A7F174F7AEE335</string>
<key>Tracks</key>
<dict>
<key>2651</key>
<dict>
<key>Track ID</key><integer>2651</integer>
<key>Name</key><string>Munastero 'e Santa Chiara</string>
<key>Artist</key><string>A.M.P</string>
<key>Composer</key><string>Barberis A., Galvieri</string>
<key>Album</key><string>Bella Napoli</string>
<key>Genre</key><string>World</string>
<key>Kind</key><string>File audio AAC</string>
<key>Size</key><integer>2378728</integer>
<key>Total Time</key><integer>149520</integer>
<key>Disc Number</key><integer>1</integer>
<key>Disc Count</key><integer>1</integer>
<key>Track Number</key><integer>14</integer>
<key>Track Count</key><integer>15</integer>
<key>Year</key><integer>2007</integer>
<key>Date Modified</key><date>2011-06-07T13:22:48Z</date>
<key>Date Added</key><date>2008-10-12T11:50:56Z</date>
<key>Bit Rate</key><integer>123</integer>
<key>Sample Rate</key><integer>44100</integer>
<key>Play Count</key><integer>3</integer>
<key>Play Date</key><integer>3367816684</integer>
<key>Play Date UTC</key><date>2010-09-20T06:38:04Z</date>
<key>Compilation</key><true/>
<key>Artwork Count</key><integer>1</integer>
<key>Sort Album</key><string>Bella Napoli</string>
<key>Sort Artist</key><string>A.M.P</string>
<key>Sort Composer</key><string>Barberis A., Galvieri</string>
<key>Sort Name</key><string>Munastero 'e Santa Chiara</string>
<key>Persistent ID</key><string>0000000000000376</string>
<key>Track Type</key><string>File</string>
<key>Location</key><string>file://localhost/C:/Users/andrea/Music/iTunes/iTunes%20Media/Music/Compilations/Bella%20Napoli/14%20Munastero%20'e%20Santa%20Chiara.m4a</string>
<key>File Folder Count</key><integer>-1</integer>
<key>Library Folder Count</key><integer>-1</integer>
</dict>
<key>2653</key>
<dict>
<key>Track ID</key><integer>2653</integer>
<key>Name</key><string>Traccia 01</string>
<key>Artist</key><string>A6 ALLROAD</string>
<key>Album Artist</key><string>A6 ALLROAD</string>
<key>Album</key><string>2008 TUTTI SUCCESSI</string>
<key>Kind</key><string>File audio MPEG</string>
<key>Size</key><integer>5888463</integer>
<key>Total Time</key><integer>245263</integer>
<key>Track Number</key><integer>1</integer>
<key>Track Count</key><integer>20</integer>
<key>Date Modified</key><date>2008-01-18T08:12:30Z</date>
<key>Date Added</key><date>2008-01-18T08:36:02Z</date>
<key>Bit Rate</key><integer>192</integer>
<key>Sample Rate</key><integer>44100</integer>
<key>Play Count</key><integer>28</integer>
<key>Play Date</key><integer>3419616065</integer>
<key>Play Date UTC</key><date>2012-05-11T19:21:05Z</date>
<key>Skip Date</key><date>2012-02-01T03:48:19Z</date>
<key>Sort Album</key><string>2008 TUTTI SUCCESSI</string>
<key>Sort Album Artist</key><string>A6 ALLROAD</string>
<key>Sort Artist</key><string>A6 ALLROAD</string>
<key>Sort Name</key><string>Traccia 01</string>
<key>Persistent ID</key><string>0000000000000377</string>
<key>Track Type</key><string>File</string>
<key>Location</key><string>file://localhost/C:/Users/andrea/Music/iTunes/iTunes%20Media/Music/A6%20ALLROAD/2008%20TUTTI%20SUCCESSI/01%20Traccia%2001.mp3</string>
<key>File Folder Count</key><integer>5</integer>
<key>Library Folder Count</key><integer>1</integer>
</dict>
<key>2655</key>
<dict>
<key>Track ID</key><integer>2655</integer>
<key>Name</key><string>Traccia 02</string>
<key>Artist</key><string>A6 ALLROAD</string>
<key>Album</key><string>2008 TUTTI SUCCESSI</string>
<key>Kind</key><string>File audio MPEG</string>
<key>Size</key><integer>4675349</integer>
<key>Total Time</key><integer>194716</integer>
<key>Track Number</key><integer>2</integer>
<key>Track Count</key><integer>20</integer>
<key>Date Modified</key><date>2008-01-18T08:12:30Z</date>
<key>Date Added</key><date>2008-01-18T08:36:44Z</date>
<key>Bit Rate</key><integer>192</integer>
<key>Sample Rate</key><integer>44100</integer>
<key>Play Count</key><integer>25</integer>
<key>Play Date</key><integer>3419616259</integer>
<key>Play Date UTC</key><date>2012-05-11T19:24:19Z</date>
<key>Skip Date</key><date>2012-07-15T11:12:37Z</date>
<key>Sort Album</key><string>2008 TUTTI SUCCESSI</string>
<key>Sort Artist</key><string>A6 ALLROAD</string>
<key>Sort Name</key><string>Traccia 02</string>
<key>Persistent ID</key><string>0000000000000378</string>
<key>Track Type</key><string>File</string>
<key>Location</key><string>file://localhost/C:/Users/andrea/Music/iTunes/iTunes%20Media/Music/A6%20ALLROAD/2008%20TUTTI%20SUCCESSI/02%20Traccia%2002.mp3</string>
<key>File Folder Count</key><integer>5</integer>
<key>Library Folder Count</key><integer>1</integer>
</dict>
这不是完整的文件,但你明白了。我正在尝试获取相关信息以传递到属性并创建此对象,但我不知道从哪里开始:
package entities;
public class Track {
private int id;
private String name;
private String artist;
private String composer;
private String album;
private String genre;
private String kind;
private int size;
private int totalTime;
private int discNumber;
private int discCount;
private int trackNumber;
private int trackCount;
private int year;
private int dateModified;
private int dateAdded;
private int bitRate;
private int playCount;
private int playDate;
private int playDateUTC;
private boolean compilation;
private int artworkCount;
private String sortAlbum;
private String sortArtist;
private String sortComposer;
private String persistantID;
private String trackType;
private String location;
private int fileFolderCount;
private int libraryFolderCount;
public Track(int id, String name, String artist, String composer, String album, String genre, String kind, int size,
int totalTime, int discNumber, int discCount, int trackNumber, int trackCount, int year, int dateModified,
int dateAdded, int bitRate, int playCount, int playDate, int playDateUTC, boolean compilation,
int artworkCount, String sortAlbum, String sortArtist, String sortComposer, String persistantID,
String trackType, String location, int fileFolderCount, int libraryFolderCount) {
super();
this.id = id;
this.name = name;
this.artist = artist;
this.composer = composer;
this.album = album;
this.genre = genre;
this.kind = kind;
this.size = size;
this.totalTime = totalTime;
this.discNumber = discNumber;
this.discCount = discCount;
this.trackNumber = trackNumber;
this.trackCount = trackCount;
this.year = year;
this.dateModified = dateModified;
this.dateAdded = dateAdded;
this.bitRate = bitRate;
this.playCount = playCount;
this.playDate = playDate;
this.playDateUTC = playDateUTC;
this.compilation = compilation;
this.artworkCount = artworkCount;
this.sortAlbum = sortAlbum;
this.sortArtist = sortArtist;
this.sortComposer = sortComposer;
this.persistantID = persistantID;
this.trackType = trackType;
this.location = location;
this.fileFolderCount = fileFolderCount;
this.libraryFolderCount = libraryFolderCount;
}
public Track() {
super();
// TODO Auto-generated constructor stub
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getArtist() {
return artist;
}
public void setArtist(String artist) {
this.artist = artist;
}
public String getComposer() {
return composer;
}
public void setComposer(String composer) {
this.composer = composer;
}
public String getAlbum() {
return album;
}
public void setAlbum(String album) {
this.album = album;
}
public String getGenre() {
return genre;
}
public void setGenre(String genre) {
this.genre = genre;
}
public String getKind() {
return kind;
}
public void setKind(String kind) {
this.kind = kind;
}
public int getSize() {
return size;
}
public void setSize(int size) {
this.size = size;
}
public int getTotalTime() {
return totalTime;
}
public void setTotalTime(int totalTime) {
this.totalTime = totalTime;
}
public int getDiscNumber() {
return discNumber;
}
public void setDiscNumber(int discNumber) {
this.discNumber = discNumber;
}
public int getDiscCount() {
return discCount;
}
public void setDiscCount(int discCount) {
this.discCount = discCount;
}
public int getTrackNumber() {
return trackNumber;
}
public void setTrackNumber(int trackNumber) {
this.trackNumber = trackNumber;
}
public int getTrackCount() {
return trackCount;
}
public void setTrackCount(int trackCount) {
this.trackCount = trackCount;
}
public int getYear() {
return year;
}
public void setYear(int year) {
this.year = year;
}
public int getDateModified() {
return dateModified;
}
public void setDateModified(int dateModified) {
this.dateModified = dateModified;
}
public int getDateAdded() {
return dateAdded;
}
public void setDateAdded(int dateAdded) {
this.dateAdded = dateAdded;
}
public int getBitRate() {
return bitRate;
}
public void setBitRate(int bitRate) {
this.bitRate = bitRate;
}
public int getPlayCount() {
return playCount;
}
public void setPlayCount(int playCount) {
this.playCount = playCount;
}
public int getPlayDate() {
return playDate;
}
public void setPlayDate(int playDate) {
this.playDate = playDate;
}
public int getPlayDateUTC() {
return playDateUTC;
}
public void setPlayDateUTC(int playDateUTC) {
this.playDateUTC = playDateUTC;
}
public boolean isCompilation() {
return compilation;
}
public void setCompilation(boolean compilation) {
this.compilation = compilation;
}
public int getArtworkCount() {
return artworkCount;
}
public void setArtworkCount(int artworkCount) {
this.artworkCount = artworkCount;
}
public String getSortAlbum() {
return sortAlbum;
}
public void setSortAlbum(String sortAlbum) {
this.sortAlbum = sortAlbum;
}
public String getSortArtist() {
return sortArtist;
}
public void setSortArtist(String sortArtist) {
this.sortArtist = sortArtist;
}
public String getSortComposer() {
return sortComposer;
}
public void setSortComposer(String sortComposer) {
this.sortComposer = sortComposer;
}
public String getPersistantID() {
return persistantID;
}
public void setPersistantID(String persistantID) {
this.persistantID = persistantID;
}
public String getTrackType() {
return trackType;
}
public void setTrackType(String trackType) {
this.trackType = trackType;
}
public String getLocation() {
return location;
}
public void setLocation(String location) {
this.location = location;
}
public int getFileFolderCount() {
return fileFolderCount;
}
public void setFileFolderCount(int fileFolderCount) {
this.fileFolderCount = fileFolderCount;
}
public int getLibraryFolderCount() {
return libraryFolderCount;
}
public void setLibraryFolderCount(int libraryFolderCount) {
this.libraryFolderCount = libraryFolderCount;
}
@Override
public String toString() {
return "Track [id=" + id + ", name=" + name + ", artist=" + artist + ", composer=" + composer + ", album="
+ album + ", genre=" + genre + ", kind=" + kind + ", size=" + size + ", totalTime=" + totalTime
+ ", discNumber=" + discNumber + ", discCount=" + discCount + ", trackNumber=" + trackNumber
+ ", trackCount=" + trackCount + ", year=" + year + ", dateModified=" + dateModified + ", dateAdded="
+ dateAdded + ", bitRate=" + bitRate + ", playCount=" + playCount + ", playDate=" + playDate
+ ", playDateUTC=" + playDateUTC + ", compilation=" + compilation + ", artworkCount=" + artworkCount
+ ", sortAlbum=" + sortAlbum + ", sortArtist=" + sortArtist + ", sortComposer=" + sortComposer
+ ", persistantID=" + persistantID + ", trackType=" + trackType + ", location=" + location
+ ", fileFolderCount=" + fileFolderCount + ", libraryFolderCount=" + libraryFolderCount + "]";
}
}
这是我到目前为止所拥有的:
package main;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;
import entities.Track;
public class Main {
Main() throws ParserConfigurationException, SAXException, IOException{
ArrayList<Track> tracks = new ArrayList<Track>();
File xmlFile = new File("iTunes Music Library1.xml");
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = factory.newDocumentBuilder();
Document doc = dBuilder.parse(xmlFile);
System.out.println("Root element " +doc.getDocumentElement().getNodeName());
NodeList nList = doc.getElementsByTagName("dict");
for(int i=0;i<nList.getLength();i++) {
Node node = nList.item(i);
NodeList childList=node.getChildNodes();
System.out.println("Current Element: "+node.getNodeName());
}
}
}
public static void main(String[] args) {
try {
new Main();
} catch (ParserConfigurationException | SAXException | IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
谢谢。
最佳答案
我会使用 SAX 解析器。您的实现类将被调用以获取 XML 文件中每个对象的开始/结束,并且您将必须编写一些能够理解文件结构的智能内容。也就是说,记住最后一个键,以便您知道何时获得值以及该值的用途。
如果您从未使用 SAX 解析器编写过代码,这将花费您一些时间,但您会学到很多东西。
关于java - java中的XML解析: how to get info out of a tag adjacent to a tag with a certain value?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59073903/
以下代码中的 alert(`${info} : ${pokemondetails[info]}\n`) 的含义是什么?有人可以用更简单的形式向我解释一下吗? let checkname = funct
C-x C-f blah.info 以基本模式打开文件。我使用了 apropos 并发现了 Info-mode,我认为它可能会从基本模式更改为 Info 模式,但这会引发 lisp 错误。 如何在 e
我想在另一个 Info.plist 键 (NSContactsUsageDescription) 的值中使用“Bundle 显示名称”(CFBundleDisplayName) 的值。 我尝试了以下方
我正在使用 Python 3.6.4。我第一次遇到 logger.setLevel(logging.INFO) 被忽略的问题,然后遇到了 this answer ,这让我感到困惑并引发了这个问题。 鉴
我是python新手 如果 logging.info() 足以进行日志记录,为什么我们必须使用 getLogger() 方法实例化一个记录器? 最佳答案 在没有名称的情况下调用 getLogger()
下面是来自源代码的示例代码:https://docs.python.org/3/howto/logging.html import logging logging.basicConfig(filena
我在网上阅读的所有内容都在谈论 Info.plist。当我创建项目时,XCode 为我创建了一个 [应用程序名称]-Info.plist 文件,它似乎与我在网上看到的示例 Info.plist 具有相
我定义了一个记录器实例如下: private static final Logger LOGGER = Logger.getLogger(Main.class.getName()); 我有一个要记录的
我的应用程序因 Info.plist 文件中缺少用途字符串而被拒绝(特别是对于 NSMicrophoneUsageDescription 用法)。 这取决于 react-native-permissi
我正在 Windows 下使用 Python 3.4.2。就我而言, import logging logger = logging.getLogger('logger') logger.setLev
我的背景主要是使用 C 和 C++ 进行 Windows 编程。最近我也有机会使用一些嵌入式 Linux 系统,但我对此还是个新手。 现在我正在为 Openwrt 开发一个实用程序,它需要对正常操作期
所以我只是按照此处所述运行了 INFO 命令 http://redis.io/commands/info 但它只给我默认部分——比如 cpu 信息和其他 当我尝试添加 [section] 参数时 -
我正在尝试了解 QEMU 内存管理(使用 i386 guest ,没有 KVM)。 QEMU 监视器允许列出 CPU 寄存器信息( info registers )、USB 设备( info usb
我的包中有 package-info.java,Hibernate 需要它来实现某些功能(编程实体扫描)。 但是,mvn package 不会导致 package-info.class 在 class
我遇到了似乎很常见的错误,因为 Xcode 似乎找不到我的“Info.plist”文件。 我已经检查了这两个 StackOverflow 问题的答案( Could not read from Info
我一直在尝试阅读 XEP-0030 Service Discovery但发现该语言非常不透明。 我的问题很简单:disco#info 规范和 disco#items 规范有什么区别? 我的猜测是 di
这个问题已经有答案了: String concatenation performance in Log4j (3 个回答) 已关闭 4 年前。 之前我通常使用log.info(“dsasdds ” +
我从 Erlang 文档中看到 supervisor:start_child 可以返回两个不同的非错误结果:{ok, Child} 和 {ok, Child, Info}。这个信息在哪里设置? sim
我使用的是 Crystal 0.25.0,File.info(string).symlink? 在以下示例中应返回 true 时返回 false: `mkdir -p /tmp/delete` Di
对于属性: Persist Security Info=true 和 Persist Security Info=false 你能告诉我它们之间有什么区别吗,如果我不把它放在我的连接中会发生什么? c
我是一名优秀的程序员,十分优秀!