Мне нужно извлечь несколько значений из файла XML, и я наткнулся на XMLStarlet, который кажется довольно мощным. Немного зная о XML, я перегружен этим инструментом и, вероятно, нуждаюсь лишь в крошечной его части. У меня есть файл, подобный следующему, и я хотел получить, скажем, следующий адрес:
<es:ipAddress>123_Westbrook</es:ipAddress>
Как бы я это напечатал?
Каково значение этих дополнительных полей, таких как es
? Я предполагаю, что это заключает в скобки этот конкретный объект (значение ipAddress
, 123 Westbrook
), но какая часть пути фактически дана XMLStarlet? Скобки? Имя параметра? Отделены косыми чертами?
Может быть:
xmlstarlet sel '<bulkCmConfigDataFile xmlns:gn="JOE.xsd"> < configDat dnPrefix="Undefined"> < xn:Subnetwork id="Oz"><xn:MeContext id="BANANS"><xn:attributes><es:vsDataMeContext><es:ipAddress>
Что должно указывать на значение 123_Westbrook
? Вставить косую черту? Что-то другое?
Исходный файл очень большой, поэтому вот первая часть XML (многие из закрывающих тегов отсутствуют, если они публикуют только его часть):
1 <?xml version="1.0" encoding="UTF-8"?>
2 <bulkCmConfigDataFile xmlns:un="utranNrm.xsd"
3 xmlns:es="FRED.99.88.xsd"
4 xmlns:xn="JIM.xsd" xmlns:gn="JOE.xsd" xmlns="CARL.xsd">
5 <fileHeader fileFormatVersion="THE_GOOD_OND" vendorName="Mr. Softie"/>
6 <configData dnPrefix="Undefined">
7 <xn:SubNetwork id="ROOM_4_MORE">
8 <xn:SubNetwork id="Oz">
9 <xn:attributes>
10 <xn:userDefinedNetworkType>SECRET_SERVICE</xn:userDefinedNetworkType>
11 <xn:userLabel>OZ</xn:userLabel>
12 </xn:attributes>
13 <xn:MeContext id="BANANAS">
14 <xn:VsDataContainer id="BANANAS">
15 <xn:attributes>
16 <xn:vsDataType>SECRET_SQUIRREL</xn:vsDataType>
17 <xn:vsDataFormatVersion>GOOD_HUMOR</xn:vsDataFormatVersion>
18 <es:vsDataMeContext>
19 <es:userLabel>ORANGE</es:userLabel>
20 <es:ipAddress>123_Westbrook</es:ipAddress>
21 <es:neMIMversion>S-11</es:neMIMversion>
22 <es:lostSynchronisation>SYNCHRONISED</es:lostSynchronisation>
23 <es:bcrLastChange>LAST_DATE</es:bcrLastChange>
24 <es:bctLastChange>LAST_DATE</es:bctLastChange>
25 <es:multiStandardRbs6k>uh-uh</es:multiStandardRbs6k>