我只想通过从字符串中搜索来提取所有标题,如果在多位置匹配,则所有匹配的标题都应添加到text2多行中。
因此请搜索字符串 sf2_06.bin ,它在下面的几个地方都匹配,因此应该带给我标题。
请记住,数据要大得多,
sf2j
sf2ja
sf2jc
我想知道是否有人可以向我展示如何完成此工作,所以非常感谢。
<game name="sf2j" cloneof="sf2" romof="sf2">
<description>Street Fighter II - The World Warrior (Japan 911210)</description>
<year>1991</year>
<manufacturer>Capcom</manufacturer>
<rom name="sf2_05.bin" merge="sf2_05.bin" size="524288" crc="ba529b4f" sha1="520840d727161cf09ca784919fa37bc9b54cc3ce"/>
<rom name="sf2_06.bin" merge="sf2_06.bin" size="524288" crc="22c9cc8e" sha1="b9194fb337b30502c1c9501cd6c64ae4035544d4"/>
<rom name="sf2_07.bin" merge="sf2_07.bin" size="524288" crc="4b1b33a8" sha1="2360cff890551f76775739e2d6563858bff80e41"/>
<rom name="sf2_08.bin" merge="sf2_08.bin" size="524288" crc="57213be8" sha1="3759b851ac0904ec79cbb67a2264d384b6f2f9f9"/>
<rom name="sf2_09.bin" merge="sf2_09.bin" size="65536" crc="a4823a1b" sha1="7b6bf59dfd578bfbbdb64c27988796783442d659"/>
<rom name="sf2_14.bin" merge="sf2_14.bin" size="524288" crc="14b84312" sha1="2eea16673e60ba7a10bd4d8f6c217bb2441a5b0e"/>
<rom name="sf2_15.bin" merge="sf2_15.bin" size="524288" crc="2c7e2229" sha1="357c2275af9133fd0bd6fbb1fa9ad5e0b490b3a2"/>
<rom name="sf2_16.bin" merge="sf2_16.bin" size="524288" crc="5e9cd89a" sha1="f787aab98668d4c2c54fc4ba677c0cb808e4f31e"/>
<rom name="sf2_17.bin" merge="sf2_17.bin" size="524288" crc="b5548f17" sha1="baa92b91cf616bc9e2a8a66adc777ffbf962a51b"/>
<rom name="sf2_18.bin" merge="sf2_18.bin" size="131072" crc="7f162009" sha1="346bf42992b4c36c593e21901e22c87ae4a7d86d"/>
<rom name="sf2_19.bin" merge="sf2_19.bin" size="131072" crc="beade53f" sha1="277c397dc12752719ec6b47d2224750bd1c07f79"/>
<rom name="sf2_24.bin" merge="sf2_24.bin" size="524288" crc="c1befaa8" sha1="a6a7f4725e52678cbd8d557285c01cdccb2c2602"/>
<rom name="sf2_25.bin" merge="sf2_25.bin" size="524288" crc="994bfa58" sha1="5669b845f624b10e7be56bfc89b76592258ce48b"/>
<rom name="sf2_26.bin" merge="sf2_26.bin" size="524288" crc="0627c831" sha1="f9a92d614e8877d648449de2612fc8b43c85e4c2"/>
<rom name="sf2_27.bin" merge="sf2_27.bin" size="524288" crc="3e66ad9d" sha1="9af9df0826988872662753e9717c48d46f2974b0"/>
<rom name="sf2_29a.bin" merge="sf2_29a.bin" size="131072" crc="bb4af315" sha1="75f0827f4f7e9f292add46467f8d4fe19b2514c9"/>
<rom name="sf2_36a.bin" merge="sf2_36a.bin" size="131072" crc="c02a13eb" sha1="b807cc495bff3f95d03b061fc629c95f965cb6d8"/>
<rom name="sf2j28.bin" size="131072" crc="d283187a" sha1="5ea83d2652e43e46b831b614d1fe06d465bac9a3"/>
<rom name="sf2j30.bin" size="131072" crc="79022b31" sha1="b7cfe0498260cdd2779580c47829dd02435ffff4"/>
<rom name="sf2j31.bin" size="131072" crc="fe15cb39" sha1="383478524881ea70d9e04c9b6143b8735b637eee"/>
<rom name="sf2j35.bin" size="131072" crc="d28158e4" sha1="bf2bca6068e374011afa95e99809d262f522df18"/>
<rom name="sf2j37.bin" size="131072" crc="516776ec" sha1="4f8b63c4d4265a105751fa72b50bd0fa538bf881"/>
<rom name="sf2j38.bin" size="131072" crc="38614d70" sha1="39c58096f3a8e01fb439639b742b83102bbaa7f6"/>
</game>
<game name="sf2ja" cloneof="sf2" romof="sf2">
<description>Street Fighter II - The World Warrior (Japan 910214)</description>
<year>1991</year>
<manufacturer>Capcom</manufacturer>
<rom name="sf2_05.bin" merge="sf2_05.bin" size="524288" crc="ba529b4f" sha1="520840d727161cf09ca784919fa37bc9b54cc3ce"/>
<rom name="sf2_06.bin" merge="sf2_06.bin" size="524288" crc="22c9cc8e" sha1="b9194fb337b30502c1c9501cd6c64ae4035544d4"/>
<rom name="sf2_07.bin" merge="sf2_07.bin" size="524288" crc="4b1b33a8" sha1="2360cff890551f76775739e2d6563858bff80e41"/>
<rom name="sf2_08.bin" merge="sf2_08.bin" size="524288" crc="57213be8" sha1="3759b851ac0904ec79cbb67a2264d384b6f2f9f9"/>
<rom name="sf2_09.bin" merge="sf2_09.bin" size="65536" crc="a4823a1b" sha1="7b6bf59dfd578bfbbdb64c27988796783442d659"/>
<rom name="sf2_14.bin" merge="sf2_14.bin" size="524288" crc="14b84312" sha1="2eea16673e60ba7a10bd4d8f6c217bb2441a5b0e"/>
<rom name="sf2_15.bin" merge="sf2_15.bin" size="524288" crc="2c7e2229" sha1="357c2275af9133fd0bd6fbb1fa9ad5e0b490b3a2"/>
<rom name="sf2_16.bin" merge="sf2_16.bin" size="524288" crc="5e9cd89a" sha1="f787aab98668d4c2c54fc4ba677c0cb808e4f31e"/>
<rom name="sf2_17.bin" merge="sf2_17.bin" size="524288" crc="b5548f17" sha1="baa92b91cf616bc9e2a8a66adc777ffbf962a51b"/>
<rom name="sf2_18.bin" merge="sf2_18.bin" size="131072" crc="7f162009" sha1="346bf42992b4c36c593e21901e22c87ae4a7d86d"/>
<rom name="sf2_19.bin" merge="sf2_19.bin" size="131072" crc="beade53f" sha1="277c397dc12752719ec6b47d2224750bd1c07f79"/>
<rom name="sf2_24.bin" merge="sf2_24.bin" size="524288" crc="c1befaa8" sha1="a6a7f4725e52678cbd8d557285c01cdccb2c2602"/>
<rom name="sf2_25.bin" merge="sf2_25.bin" size="524288" crc="994bfa58" sha1="5669b845f624b10e7be56bfc89b76592258ce48b"/>
<rom name="sf2_26.bin" merge="sf2_26.bin" size="524288" crc="0627c831" sha1="f9a92d614e8877d648449de2612fc8b43c85e4c2"/>
<rom name="sf2_27.bin" merge="sf2_27.bin" size="524288" crc="3e66ad9d" sha1="9af9df0826988872662753e9717c48d46f2974b0"/>
<rom name="sf2_28a.bin" size="131072" crc="4009955e" sha1="7842dbef7650485639fbae49b9f4db7494d4f73d"/>
<rom name="sf2_29a.bin" merge="sf2_29a.bin" size="131072" crc="bb4af315" sha1="75f0827f4f7e9f292add46467f8d4fe19b2514c9"/>
<rom name="sf2_30a.bin" size="131072" crc="57bd7051" sha1="5e211e75b1649b07723cabc03cf15636dbbae595"/>
<rom name="sf2_31a.bin" size="131072" crc="a673143d" sha1="e565f0ec23d6deb543c72af5a83f070c07319477"/>
<rom name="sf2_35a.bin" size="131072" crc="8c1f3994" sha1="5e1d334399d05a837c2d80f79eada543e83afaf7"/>
<rom name="sf2_36a.bin" merge="sf2_36a.bin" size="131072" crc="c02a13eb" sha1="b807cc495bff3f95d03b061fc629c95f965cb6d8"/>
<rom name="sf2_38a.bin" size="131072" crc="4c2ccef7" sha1="77b119c70c255622b023de25d9af3b3aac52ea47"/>
<rom name="sf2j_37a.bin" size="131072" crc="1e1f6844" sha1="c80e5ac6a6cea39511c38e31ea55b6cd3888024f"/>
</game>
<game name="sf2jc" cloneof="sf2" romof="sf2">
<description>Street Fighter II - The World Warrior (Japan 910306)</description>
<year>1991</year>
<manufacturer>Capcom</manufacturer>
<rom name="sf2_05.bin" merge="sf2_05.bin" size="524288" crc="ba529b4f" sha1="520840d727161cf09ca784919fa37bc9b54cc3ce"/>
<rom name="sf2_06.bin" merge="sf2_06.bin" size="524288" crc="22c9cc8e" sha1="b9194fb337b30502c1c9501cd6c64ae4035544d4"/>
<rom name="sf2_07.bin" merge="sf2_07.bin" size="524288" crc="4b1b33a8" sha1="2360cff890551f76775739e2d6563858bff80e41"/>
<rom name="sf2_08.bin" merge="sf2_08.bin" size="524288" crc="57213be8" sha1="3759b851ac0904ec79cbb67a2264d384b6f2f9f9"/>
<rom name="sf2_09.bin" merge="sf2_09.bin" size="65536" crc="a4823a1b" sha1="7b6bf59dfd578bfbbdb64c27988796783442d659"/>
<rom name="sf2_14.bin" merge="sf2_14.bin" size="524288" crc="14b84312" sha1="2eea16673e60ba7a10bd4d8f6c217bb2441a5b0e"/>
<rom name="sf2_15.bin" merge="sf2_15.bin" size="524288" crc="2c7e2229" sha1="357c2275af9133fd0bd6fbb1fa9ad5e0b490b3a2"/>
<rom name="sf2_16.bin" merge="sf2_16.bin" size="524288" crc="5e9cd89a" sha1="f787aab98668d4c2c54fc4ba677c0cb808e4f31e"/>
<rom name="sf2_17.bin" merge="sf2_17.bin" size="524288" crc="b5548f17" sha1="baa92b91cf616bc9e2a8a66adc777ffbf962a51b"/>
<rom name="sf2_18.bin" merge="sf2_18.bin" size="131072" crc="7f162009" sha1="346bf42992b4c36c593e21901e22c87ae4a7d86d"/>
<rom name="sf2_19.bin" merge="sf2_19.bin" size="131072" crc="beade53f" sha1="277c397dc12752719ec6b47d2224750bd1c07f79"/>
<rom name="sf2_24.bin" merge="sf2_24.bin" size="524288" crc="c1befaa8" sha1="a6a7f4725e52678cbd8d557285c01cdccb2c2602"/>
<rom name="sf2_25.bin" merge="sf2_25.bin" size="524288" crc="994bfa58" sha1="5669b845f624b10e7be56bfc89b76592258ce48b"/>
<rom name="sf2_26.bin" merge="sf2_26.bin" size="524288" crc="0627c831" sha1="f9a92d614e8877d648449de2612fc8b43c85e4c2"/>
<rom name="sf2_27.bin" merge="sf2_27.bin" size="524288" crc="3e66ad9d" sha1="9af9df0826988872662753e9717c48d46f2974b0"/>
<rom name="sf2_28c.bin" size="131072" crc="6eddd5e8" sha1="62bd1c2fc0321809421c9a592f691b5b1a1d8807"/>
<rom name="sf2_29a.bin" merge="sf2_29a.bin" size="131072" crc="bb4af315" sha1="75f0827f4f7e9f292add46467f8d4fe19b2514c9"/>
<rom name="sf2_30c.bin" size="131072" crc="8add35ec" sha1="b08428ff262ca4feddd3c72058b4b674a5401aba"/>
<rom name="sf2_31c.bin" size="131072" crc="c4fff4a9" sha1="4b593ace201fe7f5a00b5cd7f4e8fc3f8dd4ceed"/>
<rom name="sf2_35c.bin" size="131072" crc="6bcb404c" sha1="b5f24556c633c521aadd94e016d78db6922e3dfa"/>
<rom name="sf2_36a.bin" merge="sf2_36a.bin" size="131072" crc="c02a13eb" sha1="b807cc495bff3f95d03b061fc629c95f965cb6d8"/>
<rom name="sf2_38c.bin" size="131072" crc="8210fc0e" sha1="7d6cfb99afa89d0e6e991d9f7c1808b740def125"/>
<rom name="sf2j_37c.bin" size="131072" crc="0d74a256" sha1="587fd0ee1c2ef54554237486eb5b0d1ec30c2868"/>
</game>
<game name="sf2koryu" cloneof="sf2ce" romof="sf2ce">
<description>Street Fighter II' - Champion Edition (Kouryu)</description>
<year>1992</year>
<manufacturer>bootleg</manufacturer>
<rom name="s92_01.bin" merge="s92_01.bin" size="524288" crc="03b0d852" sha1="f370f25c96ad2b94f8c53d6b7139100285a25bef"/>
<rom name="s92_02.bin" merge="s92_02.bin" size="524288" crc="840289ec" sha1="2fb42a242f60ba7e74009b5a90eb26e035ba1e82"/>
<rom name="s92_03.bin" merge="s92_03.bin" size="524288" crc="cdb5f027" sha1="4c7d944fef200fdfcaf57758b901b5511188ed2e"/>
<rom name="s92_04.bin" merge="s92_04.bin" size="524288" crc="e2799472" sha1="27d3796429338d82a8de246a0ea06dd487a87768"/>
<rom name="s92_05.bin" merge="s92_05.bin" size="524288" crc="ba8a2761" sha1="4b696d66c51611e43522bed752654314e76d33b6"/>
<rom name="s92_06.bin" merge="s92_06.bin" size="524288" crc="e584bfb5" sha1="ebdf1f5e2638eed3a65dda82b1ed9151a355f4c9"/>
<rom name="s92_07.bin" merge="s92_07.bin" size="524288" crc="21e3f87d" sha1="4a4961bb68c3a1ce15f9d393d9c03ecb2466cc29"/>
<rom name="s92_08.bin" merge="s92_08.bin" size="524288" crc="befc47df" sha1="520390420da3a0271ba90b0a933e65143265e5cf"/>
<rom name="s92_09.bin" merge="s92_09.bin" size="65536" crc="08f6b60e" sha1="8258fcaca4ac419312531eec67079b97f471179c"/>
<rom name="s92_10.bin" merge="s92_10.bin" size="524288" crc="960687d5" sha1="2868c31121b1c7564e9767b9a19cdbf655c7ed1d"/>
<rom name="s92_11.bin" merge="s92_11.bin" size="524288" crc="978ecd18" sha1="648a59706b93c84b4206a968ecbdc3e834c476f6"/>
<rom name="s92_12.bin" merge="s92_12.bin" size="524288" crc="d6ec9a0a" sha1="ed6143f8737013b6ef1684e37c05e037e7a80dae"/>
<rom name="s92_13.bin" merge="s92_13.bin" size="524288" crc="ed2c67f6" sha1="0083c0ffaf6fe7659ff0cf822be4346cd6e61329"/>
<rom name="s92_18.bin" merge="s92_18.bin" size="131072" crc="7f162009" sha1="346bf42992b4c36c593e21901e22c87ae4a7d86d"/>
<rom name="s92_19.bin" merge="s92_19.bin" size="131072" crc="beade53f" sha1="277c397dc12752719ec6b47d2224750bd1c07f79"/>
<rom name="u195.rom" size="131072" crc="c95e4443" sha1="28417dee9ccdfa65b0f4a92aa29b90279fe8cd85"/>
<rom name="u196.rom" size="524288" crc="b23a869d" sha1="24247d412f20d069919cc8a7fff208af3f7aa1d2"/>
<rom name="u221.rom" size="131072" crc="64e6e091" sha1="32ec05db955e538d4ada26d19ee50926f74b684f"/>
<rom name="u222.rom" size="524288" crc="9236a79a" sha1="39c47b0b0ca2f5f569ff07ebb91040b95d0cb43b"/>
</game>
答案 0 :(得分:3)
尝试这样的事情
Option Explicit
Private Sub Form_Load()
Dim oRoot As Object
Dim oNode As Object
With CreateObject("MSXML2.DOMDocument")
.Load "d:\temp\aaa.xml"
Set oRoot = .DocumentElement
End With
For Each oNode In oRoot.SelectNodes("//rom[@name='sf2_06.bin']")
Debug.Print oNode.ParentNode.Attributes.GetNamedItem("name").Text
Next
End Sub
答案 1 :(得分:2)
@wqw提供了一个完美的简洁答案,但是如果您不熟悉XPath,则可以通过遍历df <- structure(list(Time = structure(1:9, .Label = c("2014/10/11",
"2014/10/12", "2014/10/13", "2014/10/14", "2014/10/15", "2014/10/16",
"2014/10/17", "2014/10/18", "2014/10/19"), class = "factor"),
a = structure(c(1L, 1L, 2L, 4L, 4L, 2L, 2L, 1L, 3L), .Label = c("A",
"B", "C", "D"), class = "factor"), b = c(40L, 40L, 9L, 16L,
1L, 20L, 20L, 11L, 31L), c = c(20L, 20L, 10L, 5L, 6L, 7L,
7L, 9L, 20L), d = c(10L, 10L, 9L, 12L, 5L, 8L, 8L, 5L, 23L
), id = 1:9), class = "data.frame", row.names = c("1", "2",
"3", "4", "5", "6", "7", "8", "9"))
和game
节点来手动查找数据:
rom
这基本上与@wqw的XPath语句相同,但是也许更容易实现。
确保您具有一个最顶部的element元素。您提供的XML不会被XML解析器接受。总体结构应如下所示:
Option Explicit
Private Function Search(ByVal xml As String, ByVal romName As String) As String
Dim objDocument As New MSXML2.DOMDocument
Dim objRoot As MSXML2.IXMLDOMNode
Dim objGameNode As MSXML2.IXMLDOMNode
Dim objRomNode As MSXML2.IXMLDOMNode
Dim sResults As String
' Load XML into DOM Document
objDocument.loadXML xml
' Get Root (top-most) element
Set objRoot = objDocument.DocumentElement
' Initalize return value
sResults = ""
' Loop through all Games and Roms
For Each objGameNode In objRoot.childNodes
For Each objRomNode In objGameNode.childNodes
If objRomNode.nodeName = "rom" Then
' Check ROM name
If objRomNode.Attributes.getNamedItem("name").nodeValue = romName Then
' Add game to return list
sResults = sResults & objGameNode.Attributes.getNamedItem("name").nodeValue & vbCrLf
End If
End If
Next
Next
Search = sResults
End Function
Private Sub cmdSearch_Click()
' I added your XML in a txtGames textbox and added a txtSearch textbox
txtResults.Text = Search(txtGames.Text, txtSearch.Text)
End Sub