3

関数 GetElementById を使用して xml の要素を取得しようとしていますが、関数は常に null を返します。

//get xml text from a web service
string xml = aS.createTree();
XmlDocument tree = new XmlDocument();
tree.LoadXml(xml);

//get all nodes with the tag name "item"
XmlNodeList node = tree.GetElementsByTagName("item");
//just for test to see if i could get the attribute value which returns the expected
string idTemp = node[0].Attributes["ID"].Value;
XmlElement elem = tree.GetElementById("1");

elem は常に null を返します。皆さん、私を助けてくれませんか?

ちなみに、これは私が解析しようとしているxmlです:

<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE tree [
   <!ELEMENT tree ANY>
   <!ELEMENT item ANY>
   <!ATTLIST item id ID #REQUIRED>
]>
<tree>
   <item id="1">
       <item id="2"></item>
   </item>
   <item id="5">
       <item id="6"></item>
       <item id="7">
           <item id="8">
               <item id="10">
                   <item id="11"></item>
               </item>
           </item>
           <item id="9"></item>
       </item>
   </item>
</tree>
4

3 に答える 3

4

に変更IDするだけidです:

string idTemp = node[0].Attributes["id"].Value;

ただし、次の点に注意してください。

XmlDocument.GetElementByIdMSDNから:

DOM実装には、タイプIDの属性を定義する情報が必要です。タイプIDの属性は、XSDスキーマまたはDTDのいずれかで定義できますが、このバージョンの製品は、DTDで定義された属性のみをサポートします。「ID」という名前の属性は、DTDでそのように定義されていない限り、タイプIDではありません。属性がタイプIDであるかどうかが不明な実装は、nullを返すことが期待されます。

于 2012-07-16T09:43:07.570 に答える
2

私の知る限り、idattは数字で始めることはできません。のようなことを試してid="_1"、それがどのように機能するかを確認できますか。

于 2012-07-16T09:42:34.033 に答える