可能重复:
A simple program to CRUD node and node values of xml file
我不是在寻找确切的属性或精确的节点文本。实施例
<Items>
<book>
<title> Beginning Java </title>
</book>
<book>
<title> Beginning ASP </title>
</book>
<book>
<title> Beginning Java </title>
</book>
<book>
<title> Advance Java </title>
</book>
<book>
<title> Advance ASP </title>
</book>
</items>
我想要的也是找到标题中“Beginning”或标题中“Advance”的所有书籍。野生型搜索排序。我需要什么,XPATH? ASP.NET或PHP代码都有帮助。
我这样做是为了编写一个实用工具来删除MAC上iTunes音乐库中的断开链接。
谢谢
编辑:实际XML所需的帮助 我正在根据“位置”键前面的搜索。从未遇到过这样的XML和。
再次感谢
<key>5175</key>
<dict>
<key>Track ID</key><integer>5175</integer>
<key>Name</key><string>02 - Track 02</string>
<key>Artist</key><string>Abba</string>
<key>Album</key><string>Abba Gold</string>
<key>Genre</key><string>English</string>
<key>Kind</key><string>MPEG audio file</string>
<key>Size</key><integer>5816448</integer>
<key>Total Time</key><integer>242285</integer>
<key>Track Number</key><integer>2</integer>
<key>Date Modified</key><date>2003-09-28T14:37:38Z</date>
<key>Date Added</key><date>2011-06-19T20:30:08Z</date>
<key>Bit Rate</key><integer>192</integer>
<key>Sample Rate</key><integer>44100</integer>
<key>Persistent ID</key><string>9030665BDB2B4A20</string>
<key>Track Type</key><string>File</string>
<key>Location</key><string>file://localhost/Users/macbookpro/Music/iTunes/iTunes%20Media/Music/Abba/Abba%20Gold/02%2002%20-%20Track%2002.mp3</string>
<key>File Folder Count</key><integer>5</integer>
<key>Library Folder Count</key><integer>1</integer>
</dict>
答案 0 :(得分:0)
//book[contains(title, 'Beginning') or contains(title, 'Advance')]
这应该这样做
答案 1 :(得分:0)
对于ASP.NET和PHP支持普通安装的XPath(1.0),您可以使用/Items/book[contains(title, 'Beginning') or contains(title, 'Advance')]
。请注意,XML节点名称和XPath表达式区分大小写,您的示例不是格式良好的XML,因为它具有开始标记<Items>
,但结尾标记为</items>
。
对于使用ASP.NET删除节点的代码,请尝试以下行:
XmlDocument doc = new XmlDocument();
doc.Load("input.xml");
XmlNodeList booksToRemove = doc.SelectNodes("/Items/book[contains(title, 'Beginning') or contains(title, 'Advance')]");
for (int i = booksToRemove.Length - 1; i >= 0; i--) {
booksToRemove[i].ParentNode.RemoveChild(booksToRemove[i]);
}
doc.Save("output.xml");