2011-08-02 33 views
0

當文檔頂部存在 時,我在使用JScript的Windows Script Host中評估XPath表達式時遇到問題。當我刪除DOCTYPE解析不中斷。這裏是我用來分析和加載xml的代碼示例。有沒有辦法解析這種類型的XML,除去DOCTYPE聲明。如何在DOCTYPE存在於XML聲明中時評估Xpath

我不想在處理時刪除DOCTYPE。解決方案可能是使用正則表達式刪除DOCTYPE <!DOCTYPE.*?>/gm;但我不想要那樣的解決方案。

var XmlDocument; 
    try { 
     XmlDocument = new ActiveXObject("msxml2.DOMDocument.6.0"); 
     XmlDocument.async = false; 
     XmlDocument.resolveExternals = false; 
     XmlDocument.validateOnParse = false; 
    } catch(e) { 
     if(debug == true) 
      WScript.echo("***ERROR while creating DOM Object: " + e.description); 
    } 
    // Load an XML file into the DOM instance 
    try { 
     XmlDocument.load(filePath); 
    } catch(e) { 
     if(debug == true) 
      WScript.echo("***ERROR LOADING FILE: " + e.description); 
    } 
    var Node; 
    try { 
     Node = XmlDocument.selectSingleNode("//metadata/url"); 
    } catch(e) { 
     if(debug == true) 
      WScript.echo("***ERROR RESOLVING NODE: " + e.description); 
    } 
<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE rightinclude SYSTEM "http://localhost/iw/aa.dtd"> 
<a> 
    <b> 
     <c>/someurl.html</c> 
    </b> 
</a> 

回答

0

您是否嘗試過它,當DOCTYPE元素被關閉 - 有些解析器將文檔中的這種情況。

e.g:

<!DOCTYPE rightinclude SYSTEM "http://localhost/iw/aa.dtd" /> 
+0

你說得對。當我關閉DOCTYPE標記時,解析器不會中斷。對於這種情況,沒有一些設置或指示。 – svlada

0

無需修改在XML文件中的任何東西,而不是用這種方式來解析您的文件,一切都將是好去。

這裏有一個link與描述和細節方面:

  • 的Java的XPath分析器
  • 解析XML文檔
  • 查詢XML文檔
  • 創建XML文檔
  • 修改XML文檔

乾杯; - )