【发布时间】:2017-04-08 20:58:46
【问题描述】:
我尝试使用以下代码解析一些 xml 文件:
function parseXml() {
var url = 'http://www.inpo.ru/documents/pricelists/pricelist.xml';
var xml = UrlFetchApp.fetch(url).getContentText();
var parseregexp = new RegExp (/.*em><no>(\d+)<\/no><title>(.+?)<\/title><price vat="\w+">(\d+.\d+|\d+)<\/price><unit>(.+?)<\/unit><free>(\d+)<\/free>(.|\s)*?<it/g)
var parsedData = '$1 $2 $3 $4 $5 '
var rangeRegex = [];
var Pdata = xml.replace(parseregexp,parsedData)
var ss = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet()
ss.getRange(1, 1).setValue(Pdata)
}
这里是xml片段:
<item><no>48514</no><title>The workpiece is the rod d 8x150mm P6AM5 HRC 64-66" CNIC"</title><price vat="yes">154.58</price><unit>Pcs</unit><free>59</free><remarks>Used to make an axial tool.
Hardness HRC64-66</remarks><img thumbnail="http://www.inpo.ru/index/I:48528/THUMBNAIL:0.jpg">http://www.inpo.ru/index/I: 48528 / PREVIEW: 0.jpg</img></item><item><no>48515</no><title>The workpiece is the rod d 8x200mm P6AM5 HRC 64-66"CNIC"</title><price vat="Yes">198.24</price><unit>pcs</unit><free>32</free><remarks>Used to make an axial tool.
Hardness HRC64-66</remarks><img thumbnail="http://www.inpo.ru/index/I:48528/THUMBNAIL:0.jpg">http://www.inpo.ru/index/I: 48528 / PREVIEW: 0.jpg</img></item>
Pdata 中的结果是:
48514 The workpiece is the rod d 8x150mm P6AM5 HRC 64-66" CNIC" 154.58 Pcs 59 48515 The workpiece is the rod d 8x200mm P6AM5 HRC 64-66"CNIC" 198.24 pcs 32
在 Pdata 的这个例子中,我有 1 个来自所有正则表达式匹配的长字符串。如何从所有匹配项中创建一个包含 5 列的数组?我认为用“for”循环将每场比赛推向阵列,但不知道它是如何制作的。很高兴为您提供任何帮助
【问题讨论】:
-
您应该发布分配给变量
Pdata的值。否则我们必须运行你的代码。我们不应该那样做。看来您可能需要将数据拆分为数组中的元素。 -
@SandyGood 是的,你是对的,我在问题中添加了它
-
要在哪里拆分内容?在 48514 和 48515?
-
我想将 48514 和 48515 存储在单元格 A2 和 A3 中。接下来的比赛从 $2 $3 $4 $5 全在 B2 C2 D2 E2 和 B3 C3 D3 E3
-
你玩腻了吗! Xmlservice
标签: arrays regex google-apps-script