English 中文(简体)
从Xml文档中读取坐标
原标题:Reading coordinates from xml file

我有这一文字,读作xml文档。 档案载有坐标,我想列出坐标:

@echo off
setlocal EnableDelayedExpansion

FOR %%K IN (*.xml) DO (
SET K=%%K
SET K=!K:~0,-4!
SET "prep=0"

    REM READ DATA
    FOR /F "tokens=*" %%X IN (!K!.kml) DO (
    if !prep! == 1 (
    echo %%X
    pause
      FOR /F %%L IN ("%%X") DO (
      SET L=%%L
      IF NOT "!L:~0,1!" == "<" (
        echo %%L
        )       
      )
      SET "prep=0"
    )
    if "%%X" == "<coordinates>" ( SET "prep=1" )
    )
)

I got these result:

14.63778004128814,49.50141683426452,0 14.63696238385996,49.48348965654706,0 14.6
8840586504191,49.47901033971912,0 14.68589371304878,49.49939179836829,0 14.63778
004128814,49.50141683426452,0 </coordinates>
Press and key to continue...
14.63778004128814,49.50141683426452,0
Press and key to continue...

第一,见坐标。 第二,在第三处,有线索。 但是,我只剩下一张坐标表......。 如果我再打一个钥匙,则批量在不印刷下栏的情况下完成。 你们能否帮助?

Edit After the answer has been posted, I have question 1) could we use this:

SET LF=^


setlocal EnableDelayedExpansion
... (next code) ...
set "var=!var: =%LF%!"    

因此,如果不出现拖延的低频变量,我们就能够加以掩饰。 还是不是?

和2)为什么在你的法典中出现

for %%L in ("!LF!") do set "X=!X: =%%~L!"

页: 1

最佳回答

你们眼前的问题是,对于F/F来说,它不会使脚踏上线。 这完全等于你们要求的每一个象征性。 如果你没有具体说明“象征性”选择,那么它就没有“象征性=1”——它只是按行文中的第一个表示。

然而,如果扼杀含有线性特征,则F/F将视体为多线。 然后,它会照你所希望的每一个线。 骗局是用线性馈电取代你的空间划界。 有许多方法可以做这项工作,但我将显示我认为最容易做的工作。

第一定义包含单一行文的变量

set LF=^


::The two blank lines above are critical for the definition of the line feed

下一个陷阱是用线性手法取代你变量中的空间。 通常采用变数替代,将研究如下内容:set“var=!var:search=%replaceVar%>>。 但是,这为低频变量赢得了工作,很难利用正常扩张与低频变量合作。 较易利用延迟扩大。 我们可以把延迟扩大纳入延迟扩大的范围,但我们可以把低森林价值转让给简单的可变性,并在(“!”)中使用<%L>的代码。 确实规定了“瓦尔=%~<0>/代码”。

我不理解你们的守则,你们最初的居住点是整整条。 KML档案。 您利用一项次员行动,使延期中断。 如果不使用环境变量:%~nK,在无延伸的情况下,将提供档案的基本名称。 但是,为什么在你回过头并再次评估延期时这样做呢?

我直接使用了%K值——我增加了美国地理统计局的选择,并添加了引语,允许在档案名称中留出空间。

这里的守则应该做你们所期望的。

@echo off
setlocal EnableDelayedExpansion

::define a variable containing a linefeed character
set LF=^


::Above 2 blank lines are part of the LF definition, do not remove

for %%K in (*.kml) do (
  set "prep=0"
  for /f "usebackq tokens=*" %%X in ("%%K") do (
    if !prep! == 1 (
      echo %%X
      pause
      set "ln=%%X"
      for %%L in ("!LF!") do set "ln=!ln: =%%~L!"
      for /f %%L in ("!ln!") do (
        set L=%%L
        if not "!L:~0,1!" == "<" (
          echo %%L
        )
      )
      set "prep=0"
    )
    if "%%X" == "<coordinates>" ( set "prep=1" )
  )
)

BUT——我认为你面临更大的问题。 我担心的是,你正在通过使用批量制造XML制造痛苦的世界。 您将一如既往地以同样的方式承担《公约》义务。 无数有效的途径是,在冲破你的算法的XML文件中增加或缩小线和白色空间。 你们能否确定你们的所有投入文件来自同一个来源,并且总是像你所期望的那样格式? 我认为,你真的应该利用SSLT,把你的XML文件编成一个赤 naked的坐标表。

Answsers to additional questions

(1) <代码>“var=%LF%>/code>将不会奏效——定期扩大低频飞行序列和多次扩展。 这项工作如下:set “var=var: =^%LF%LF%LF%>>。

低森林覆盖率的逃学顺序可能非常trick,因此我试图避免。

2) 关于(for%L in ("!LF") do set“X=X!: =%~L>/code,注意到它是简单的表格,而不是表格/F。 ! 不得援引或读。 但是,表格保留了引文(与F/F一样),因此,我需要%~L,以删除封面的引文。

价比和价面/价对细表有非常重要的区别。 表格将保留所引述的行文,而表/F则将线码作为线性划定器处理,并按行分列,因此线索不予以保存。

问题回答

暂无回答




相关问题
complex batch replacement linux

I m trying to do some batch replacement for/with a fairly complex pattern So far I find the pattern as: find ( -name *.php -o -name *.html ) -exec grep -i -n hello {} + The string I want ...

How to split a string by spaces in a Windows batch file?

Suppose I have a string "AAA BBB CCC DDD EEE FFF". How can I split the string and retrieve the nth substring, in a batch file? The equivalent in C# would be "AAA BBB CCC DDD EEE FFF".Split()[n]

How to check which Operating System?

How can I check OS version in a batch file or through a vbs in an Windows 2k/2k3 environment ? You know ... Something like ... : "If winver Win2k then ... or if winver Win2k3 then ....