c#
  • xml
  • xpath
  • 2012-05-03 11 views 2 likes 
    2

    I次のC#コードを持っている:私は自分のコードを実行したときにのXpathエラーは無効なトークンを持っている

    var selectNode = xmlDoc.SelectSingleNode("//CodeType[@name='" + codetype + 
        "']/Section[@title='" + section + "']/Code[@code='" + code + "' and 
        @description='" + codedesc + "']") as XmlElement; 
    

    はそれが

    これらは値であり、「上記のステートメントは、無効なトークンを持っている」というエラーを発生させますが上記のステートメントのために。

    codeType=cbc 
    section="Mental" 
    codedesc="Injection, enzyme (eg, collagenase), palmar fascial cord (ie, 
        Dupuytren's contracture" 
    
    +0

    xmlのサンプルを貼り付けても構いませんか? –

    +1

    私の場合、XPath式を "]"文字で閉じるのを忘れてしまったので、私はエラーメッセージを受け取りました。 –

    答えて

    5

    お知らせcodedescにアポストロフィ(')?

    何とかエスケープする必要があります。 XPathインタプリタは、それを文字列区切り文字とみなし、後に他のアポストロフィをどのように扱うかを知らない。

    あなたができることの1つは、文字列をアポストロフィの代わりに二重引用符で囲むことです。

    あなたのコードは、それゆえになる可能性

    var selectNode = xmlDoc.SelectSingleNode(
        "//CodeType[@name='" + codetype + "']" + 
        "/Section[@title='" + section + "']" + 
        "/Code[@code=\"" + code + "' and @description='" + codedesc + "\"]") 
        as XmlElement; 
    

    (アポストロフィ(')は、二重引用符(\")となりました、4行目の点に注意してください)

    このアプローチは、あなたが提示されるデータのために動作しますがまだ100%安全ではありません。他のレコードには二重引用符を入れることができます。それが起こるならば、我々はその事件のために何かを考える必要があるでしょう。

    +0

    ありがとう、私は私のコード化データのアポストロフィを乗り越える方法を見つけるでしょう。 – user1373355

    -2

    それは「デュピュイトラン "の拘縮」

    あなたはXPath式に単一引用符をエスケープすることができますこの方法を読み取るように、単一引用符を複製します。

    +0

    これはうまくいかなかった – Prabu

    関連する問題