GetElementById() でタグが見つからない?
-
18-09-2019 - |
質問
次の .NET C# Windows サービスによって読み取られる有効な XML ファイルがあります。問題のタグ (u1_000) は絶対に要素内にあります。
<book id="u1_000" category="xyz">
GetElementById() がタグ付きの Book 要素を見つけられないのには、何らかの理由がありますか?- ありがとう
XmlDocument doc = new XmlDocument();
doc.Load("C:\\j.xml");
XmlElement ee = doc.GetElementById("U1_000");
<book id="U1_000" category="web">
解決
何もない場合は、
、おそらくバックアップとしてXPathを使用します:
string id = "u1_000";
string query = string.Format("//*[@id='{0}']", id); // or "//book[@id='{0}']"
XmlElement el = (XmlElement)doc.SelectSingleNode(query);
他のヒント
チェックしてください このメソッドに関する MSDN ドキュメント. 。以下のサンプルでは、DOCTYPE を使用して ID を確立する方法を確認できます。これにより問題が解決する可能性があります。
あなたは一意のIDをconsituteう要素のどの属性を確立するために、DTDを必要としています。 XMLでは自動的にid
属性がユニークな要素のIDとして扱われるべきであると想定されていない。
一般的にgetElementByIdを、非常に有用ではありませんXML「をunDTDed」。それは処理されているXMLファイルの構造は、したがって、一般的なアクセスは、次のようになります(例えばルート要素がbooks
の一連の要素が含まれていbook
と呼ばれている)理解されているほとんどの場合: -
XmlElement book = (XmlElement)doc.DocumentElement.SelectSingleNode("book[@ID='U1_000']");
あなたが本当にXML構造および/または要素のタグ名がわからない場合は、Marcsの答えで説明力まかせ探索が働くだろう。
所属していません StackOverflow