質問

次の .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の答えで説明力まかせ探索が働くだろう。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top